java中关于byte,short,char数据类型的转换(编译器常量优化)

byte a = 30`;//这个语句是正确的`
short result2 = 5+5;//这个语句是正确的

等号右边的30默认是int型,按道理应该需要写成(byte)30,强制转换成byte。
但javac编译器将会自动补上(byte),(short),(char)
注意事项:如果等号右边的数据没有超出左边数据类型的范围,编译器会自动补上如果超出范围,编译器会报错。这就称为“编译器的常量优化”

但是这种优化只使用于常量,一旦表达式中有变量便会报错!**

short a =5;
shrot b = 5;
short result1 = a+b;//这个语句是错误的
short result2 = 5+5;//这个语句是正确的
short result3 = 4+a+3;//这个语句是错误的,表达式中含变量,需要强制类型转换

你可能感兴趣的:(java中关于byte,short,char数据类型的转换(编译器常量优化))