第五章 编译器的两点优化
main{
byte n = 128;//右侧超过了左侧的范围
}
1.对于byte/short/char 三种类型来说 如果右侧的数值没有超过范围
那么javac编译器将会自动隐含的为我们补上(byte)(short)(char)
2.如果右侧超过左侧范围 那么编译器直接报错
main{
short n = 10;
short a = 5;
short b = 8;
//short r = a+b;//错误 左侧需要int
short r = 5 + 8;//右侧采用常量
}
在给变量赋值时 右边表达式是若干常量
那么javac将会直接将右侧计算得到结果
//short r = 5 + 8;
编译之后得到的.class文件当中相当于直接就是
short r = 13;
注意事项:
一旦表达式中有变量参与 就不能进行此优化了