第一点优化
对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,
那么javac编译器将会自动隐含地为我们补上一个(byte)(short)(char)。
- 如果没有超过左侧的范围,编译器补上强转。
- 如果右侧超过了左侧范围,那么直接编译器报错。
public class Test{
public static void main(String[] args) {
// 右侧是一个int数字,但是没有超过左侧的范围,就是正确的。
// int --> byte,不是自动类型转换
byte num1 = 30; // 右侧没有超过左侧的范围 但是编译器会隐含的将其强转为byte byte num1 = ( byte )30;
System.out.println(num1); // 30
// byte num2 = 128; // 右侧超过了左侧的范围 (会报错)
// int --> char,不是自动类型转换 但是没有超过范围
// 编译器将会自动补上一个隐含的(char) 正常输出
char zifu = 65;
System.out.println(zifu); // A
}
}
第二点优化
在给变量赋值的时候,如果左侧均为常量没有变量,那么编译器j