类型转换的问题

  1. char c1 = '1';
  2. char c2 = '2';
  3. char c3 = '1'+'2';
  4. char c4 = c1+c2; //(char)c1+c2;
  5. 如上述,为何c3的计算,不用强制转换。但c4的计算,却一定要转换?
    编译器报错是:
    引用
    Type mismatch: cannot convert from int to char
    就是说 c1+c2 的类型是int。
    java运算都至少是在int类型及其以上(long、float\double)。
    如果用c4+=c2的写法是会做自动类型转换。
    那为什么,c3这样写却可以?

    解答:

    char c3 = '1'+'2'; 是显式赋值,在编译时就可以确定的常量,因而不会报错。char c4 = c1+c2; 是通过变量赋值,是在运行时才能确定它的值,所以需要显式强制类型转换。

    http://bbs.ibeifeng.com/read-htm-tid-66116.html

你可能感兴趣的:(类型转换的问题)