原因代码里面的注释已经给出
1、a = a + 1报错:数据类型不兼容,a += 1 可以正常运行
/**
* 复合赋值运算符
*/
public class JavaDemo04 {
public static void main(String[] args) {
byte a = 1;
//a = a + 1; //会报错:类型不兼容 , 因为小于int类型的数据类型进行运算时会先转换为int类型 --> int + int -->int != byte
a += 1; //复合赋值运算符,会自动进行强制类型转换,所以不会报错 --> (byte)int
System.out.println(a);
}
}
2、b3 = b1+ b2报错:数据类型不兼容, b3 = 1 + 2 可以正常运行
/**
* 类型转换
*/
public class JavaDemo {
public static void main(String[] args) {
byte b1 = 1;
byte b2 = 2;
byte b3 = (byte)(b1 + b2); //当变量的数据类型小于int时,会先转换成int在运算,不加上强制转换(byte)会导致报错:类型不兼容
byte b4 = 1 + 2; //如果是常量运算则不会发生这类报错,因为编译器会自动转换常量的数据类型
System.out.println(b3);
System.out.println(b4);
}
}