package BangBean;public class CastingNumbers {
public static void main(String[] args){
double above=1.7,below=0.4;
System.out.println("above:"+above);
System.out.println("below:"+below);
System.out.println("(int)above:"+(int)above);
System.out.println("(int)below:"+(int)below);
System.out.println("(char)('a'+above):"+(char)('a'+above));
System.out.println("(char)('a'+below):"+(char)('a'+below));
}
}
打印的结果为:
above:1.7
below:0.4
(int)above:1
(int)below:0
(char)('a'+above):b
(char)('a'+below):a
为什么会打印出b呢?                                                                   

解决方案 »

  1.   

    System.out.println("(char)('a'+above):"+(char)('a'+above));
    首先计算‘a’+above = 98.7
    转为char为‘b’
      

  2.   

    above是1嘛a+1这里面运算关系是ascii嘛
    a的ascii好像是60多来着的吧,不清楚了,加1的话就再转化为char型就是b啊
      

  3.   

    必须是b啊!  'a'+above 自动转为8个字节的double型,  然后(char)转成字节数是2的char