常量优化机制
有一些计算,非常简单,例如常量和常量的计算就非常简单,此时在编译阶段就可以把计算完成.也就是编译时就得到常量和常量的计算结果.
##示例代码
class Demo{
public static void main(String[] args) {
byte result = 30 + 20;
// 因为在编译器已经运算了得到50, 50在byte(-128~127)范围内, 就做了一步: (byte)30运算;
System.out.println(result);
/*
byte result2 = 100 + 60; // 此时不能赋值,编译运算的结果160大于byte的范围
System.out.println(result2);
*/
/*
byte b1 = 10;
byte b2 = 20;
byte b3 = b1 + b2;
System.out.println(b3);
// b1和b2都是变量,在运行阶段的值,在编译阶段无法确定.
// 因为变量是在运行期间可以发生变化的量,无法确定b1和b2中的值.
// 所以无法在编译期做运算优化.
*/
/*
float f = 1.0 + 2.1;
System.out.println(f);
// 小数不像整数那么简单,整数只需要判断大小就可以决定
// 是否可以使用更小范围类型存储
// 而小数是不行,因为小数牵扯到数据精度的问题,默认小数常量
// 是double类型, double类型精度和float类型不一样.两个小数常量
// 因为精度问题无法做常量优化.
*/
}
}