Une optimisation constante
Lorsque l' affectation à une variable, si l'expression sur le côté droit de chacun d'eux est une constante, aucune variable,
le compilateur javac dirigera l'expression de plusieurs constantes résultat calculé.
court result = 5 + 8; // le droit du signe égal sont toutes constantes, pas de variables impliquées dans le calcul
Après la compilation, le fichier bytecode .class obtenu qui est directement équivalent à []:
Court 13 est Résultat =, les
résultats constants à droite la valeur ne dépasse pas la portée de la gauche, donc correctement.
Ceci est appelé « compilateur optimisation constante. »
Mais attention: Une fois l'expression dont il y a des variables impliquées , il ne peut pas être optimisé pour cela.
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);
}
}