本帖最后由 马磊 于 2012-10-30 00:10 编辑
这是Java编译器处理的,它觉得你这个表达式有可能超过char类型的时候,就把表达式自动提升到了int类型。
拿byte型举例:
byte a = 4;
byte b = 5;
byte c =100+10; //这个没问题
byte d = a + b; //不行了,因为编译器担心这里的a+b 会超过byte类型,所以就给提升到了int类型,因此也就不能再给byte类型的d赋值了
含有变量的表达式在做运算时,编译器会把它们的类型自动提升,而c = 'a' + 'b' ,其和为195 还小于char的上限65535呢,所以编译器知道它俩的结果可以放到char类型的c里面,所以没有报错。
|