[Java] optimisation constantes du compilateur

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);
   }
}
Publié 218 articles originaux · louange gagné 6 · vues 20000 +

Je suppose que tu aimes

Origine blog.csdn.net/u011035397/article/details/104941414
conseillé
Classement