一句话,char,byte,short进行计算操作的时候,会先将它们转换成int类型,然后再进行计算。
所以比如
byte b1 = 3,b2 = 5;
byte b3 = b1 + b2;
会报错的,因为b1 + b2的结果是int类型,将这个结果赋值给byte类型的b3,需要进行强制转换。
所以正确的表达是:
byte b3 = (byte)(b1 + b2);
另外,比如System.out.println('2'+'2');,
这个语句的输出结果是100,因为char类型的2对应的数字是50.
public class Main {
public static void main(String[] args) {
char c1 = 65;
//c1 = c1+32; //报错,
//因为c1是char类型2位,
//32是int类型8位,所以c1+32最终的计算结果会是int类型,/
//但是c1定义是char类型,所以会出错。
//如果改成(char)(c1+32)就会没有问题
//c1 =(char)(c1+32);没有问题
c1 += 32;//也没问题,但是为什么呢
System.out.println(c1);
}
}