Java基础 -- 变量相加和常量相加的区别
题目:判断下面一段代码有没有问题
public class HelloWorld {
public static void main(String[] args) {
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
System.out.println(b3);
}
}
1、byte 与 byte(或short、char)类型进行运算时会自动转换为int类型,两个int类型相加之后也是int类型,需强制转换为byte类型;
2、另外,b1和b2是变量,在编译的时候无法判断里面具体的值,可能会造成相加后的值超过byte类型的取值范围。
byte b4 = 3 + 4; System.out.println(b4);
常量在赋值时,Java编译器有常量优化机制,会先进行相加再判断是否超过byte类型的取值范围,如果不超过就转换为byte类型。

浙公网安备 33010602011771号