乘法最终和非最终的int变量有什么区别?

时间:2012-05-10 07:21:29

标签: java

请考虑此代码段

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行的行有什么区别?

2 个答案:

答案 0 :(得分:8)

不同之处在于product1所需的乘法是在编译时执行的,因为number1number2是常量。

product2的计算是在执行时编译的,因为number3number4的值可能会发生变化。实际上,您可以更改值,然后再次调用main

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

答案 1 :(得分:1)

没有区别,product1product2都等于30.

这条消息击中了你,因为你不能在没有任何解释的情况下发布代码声明。