优化1:
对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,那么javac编译器会自动隐藏的为我们补上一个强制类型转换。如果超过了范围,那么编译器会直接报错
代码举例:
public class Demo12Notice { public static void main(String[] args) { byte b1 = 15; // 等价于 byte b = (byte)15; // byte b2 = 26565; //错误 超过了范围 } }
优化2:
在给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量。那么编译器将会直接将若干个表达式计算得到结果。一旦有变量参与运算了就不能进行这种优化了。
代码举例
public class Demo13Notice { public static void main(String[] args) { byte a = 5; byte b = 6; // byte c = a + b;错误: 变量参与运算,常量无法优化 byte c = 5 + 6; // ,全部是常量,可以进行常量优化 } }