日期:2014-05-20  浏览次数:20732 次

java 初学者小程序 跪求解释
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 = ?


------解决方案--------------------
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编码。
------解决方案--------------------
楼上正解
------解决方案--------------------
探讨
Unicode 到目前为止所定义的五个平面中,第0平面(BMP)最为重要. 其编码分布如下.
  注:中文范围 4E00-9FBF:CJK 统一表意符号 (CJK Unified Ideographs)
  0000-007F:C0控制符及基本拉丁文 (C0 Control and Basic Latin)
  0080-00FF:C1控制符及拉丁文补充-1 (C1 Control and ……

------解决方案--------------------
System.out.println("b3 = " +b3); 应该改为System.out.println("b3 = " +(char)b3); 
系统不知道你要char还是int 所以 输出?
------解决方案--------------------
探讨
Unicode 到目前为止所定义的五个平面中,第0平面(BMP)最为重要. 其编码分布如下.
  注:中文范围 4E00-9FBF:CJK 统一表意符号 (CJK Unified Ideographs)
  0000-007F:C0控制符及基本拉丁文 (C0 Control and Basic Latin)
  0080-00FF:C1控制符及拉丁文补充-1 (C1 Control and ……