char的取值范围是在0到2的16次方减1,可是当我把几百几千的数赋值给char类型的变量时,
输出的却是?,这是为什么?而当我赋给它十几的数时,又变为什么都没有,要说有也是空的,
而给它1,2,3,4个位数的又输出 口 ,这是什么情况?                  char a = 2 ;
char b = 16;
char c = 1200;
System.out.print(a + " " + b + " " + c);输出    ?

解决方案 »

  1.   

    char是字符型
    它的范围是字符而不是数字啊。
    char位数16位没错,但是这16位表示的真不是数字,而应该是记录的是对应的ASCII码的值吧?
    没特意研究过,猜的,不对的话请指教。
      

  2.   

    Java里字符的存储使用的是Unicode,占用两个字节,即一个char,其值范围是[0, 65535],每个字符都能在里面找到自己对应的整数值,例如汉字'你',但是并不是里面的每个值都表示一个字符。
      

  3.   

    char 是字符类型,只能存一个字符,但也是整型的一种,里面存放的是字符的ASC2码,比如a是97,A是65等等,中国应该对应的是gb231什么国标码什么的,
      

  4.   

    char是字符类型,Java里字符的存储使用的是Unicode,计算机的内存只能存储二进制,所谓是0~2^(16-1)是它对字符进行的编码!比如ASCII等...
      

  5.   

    1 你的系统不可能全世界的字都能正常显示,涉及到字体等等
    Unicode是分区的,比如\u4E00-\u9FFF是CJK unified ideographs(中日韩越文字中出现的汉字),但是实际上这个分区目前只用到\u9FCC,也就是说,还有几十个空余。也就是这些空档内的字符其实是不存在的。
    3 有些字符(尤其是你2这样的小数)即使存在,也是不可见的。尤其是<32的,基本都属于控制字符