Java编译器的两点优化:
1.对于short\byte\char三种类型,如果右侧赋值的数值没有超过范围,
那么javac编译器将会自动隐含地为我们补上一个(short)(byte)(char)。
如果超过了范围,编译器会自动报错。
2.在给变量进行赋值的时候,如果右侧的表达式中全都是常量,没有任何变量,
那么编译器javac将会直接计算若干个常量表达式,得到结果。
例如:short result = 3+5;编译之后得到的.class字节码文件中直接就是:
short result = 13;右侧的常量结果数值没有超过左侧范围,所以正确。
这称为“编译器的常量优化”。
但是,一旦表达式中有变量参与,就不能进行这种优化了。