1

このコードスニペットを検討してください

public class ConstantFolding {

   static final  int number1 = 5;
   static final  int number2 = 6;

   static int number3 = 5;
   static int number4 = 6;

   public static void main(String[ ] args) {
      int product1 = number1 * number2;             //line A
      int product2 = number3 * number4;             //line B
   }
}

ラインAとしてマークされたラインとラインBとしてマークされたラインの違いは何ですか?

4

2 に答える 2

8

違いは、に必要な乗算はコンパイル時product1に実行され、定数であるということです。number1number2

の計算は、とproduct2の値が変更される可能性があるため、実行時にコンパイルされます。実際、値を変更してから再度呼び出すことができます。number3number4main

定数式と定数変数の詳細については、JLSのセクション15.284.12.4を参照してください。

于 2012-05-10T07:24:42.440 に答える
1

違いはなく、product1どちらproduct2も30に相当します。

説明なしでコードステートメントを投稿することはできないため、メッセージが表示されます。

于 2012-05-10T07:24:14.953 に答える