定数の最適化
変数への代入すると、それらのすべての右側の式が一定であれば、何の変数、
コンパイラjavacは結果を計算し、いくつかの定数の発現を指示しません。
短い結果= + 8 5; //等号の右側はすべて定数、計算に関与しない変数で
コンパイル後、[]に直接等価で得られたの.classバイトコードファイル:
ショート13は、検索結果である=、
右に一定結果値はそれほど正確に、左の範囲を超えていません。
これは、「一定の最適化コンパイラ」と呼ばれています。
しかしノート:関与の変数があるその表現したら、それはできません。このために最適化されます。
public class Demo13Notice {
public static void main(String[] args) {
short num1 = 10; // 正确写法,右侧没有超过左侧的范围,
short a = 5;
short b = 8;
// short + short --> int + int --> int
// short result = a + b; // 错误写法!左侧需要是int类型
// 正确写法,右侧不用变量,而是采用常量,而且只有两个常量,没有别人
short result = 5 + 8;
System.out.println(result);
// short result2 =5 + a + 8 //错误写法,中间有变量,无法进行常量优化
short result2 = (short) (5 + a + 8); //正确写法,int强制转换为short
System.out.println(result2);
}
}