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是在编译时执行的,number1并且number2是常量。

的计算product2是在执行时编译的,因为 和 的值number3可以number4改变。实际上,您可以更改这些值,然后main再次调用。

有关常量表达式和常量变量的更多信息,请参阅 JLS 的第15.284.12.4节。

于 2012-05-10T07:24:42.440 回答
1

没有区别,product1product2等于 30。

该消息击中了您,因为您不能只发布代码声明而没有任何解释。

于 2012-05-10T07:24:14.953 回答