public class Char {
public static void main(String arg[]) {
char b1 = 'c',b2 = 125;
char b3 = (char)(b1+b2-1);
System.out.println("b3 = " +b3);
}
}为什么该程序的运行结果为  b3 = ?

解决方案 »

  1.   

    ? 的ASCii码为63,而这里 b3 所算值为223……  不明白
      

  2.   

    Unicode 到目前为止所定义的五个平面中,第0平面(BMP)最为重要. 其编码分布如下.
      注:中文范围 4E00-9FBF:CJK 统一表意符号 (CJK Unified Ideographs)
      0000-007F:C0控制符及基本拉丁文 (C0 Control and Basic Latin)
      0080-00FF:C1控制符及拉丁文补充-1 (C1 Control and Latin 1 Supplement)
      0100-017F:拉丁文扩展-A (Latin Extended-A)
      0180-024F:拉丁文扩展-B (Latin Extended-B)007f = 127(10进制),
    所以,当你超过127的值时,自然也就不是ascii的范围所能描述的了,用的是unicode编码。
      

  3.   

    System.out.println("b3 = " +b3); 应该改为System.out.println("b3 = " +(char)b3); 
    系统不知道你要char还是int 所以 输出?