下列代码是否存在错误,如果有,请指出说明,并且改正
1
pulbic static void main(String[] args){
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
}
有错误,因为char,byte,short在计算时会自动类型提升为int
修改如下:
pulbic static void main(String[] args){
byte b1 = 3;
byte b2 = 4;
byte b3 = (byte)(b1 + b2);
}
2
pulbic static void main(String[] args){
byte b3 = 3 + 4;
}
没有错误,Java存在常量优化机制,在编译的时候javac就会将3和4这两个字面量进行运算,产生字节码byte b = 7
3
pulbic static void main(String[] args){
byte b3 = 300 + 4;
}
有错误,虽然Java存在常量优化机制,但是最终计算结果超出了byte可接受长度范围,所以报错
评论 (0)