java - final 和非 final int 变量相乘有什么区别?

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

最佳答案

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

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

参见章节 15.284.12.4关于常量表达式和常量变量的更多信息的 JLS。

关于java - final 和非 final int 变量相乘有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10529203/

相关文章:

互联网上的 Java UDP 客户端/服务器不起作用

java - 加密 JNI 在压力测试期间崩溃

java - 使用 li 元素迭代表

java - 在 Matlab 中使用 Java 泛型类

java - 尝试使用 apache POI 从 Excel 工作表检索数据

java - Cloudant java 非拉丁字符

java - Tiff 的 getImageWritersByFormatName 问题。获取图像写入器

java - 在网络浏览器中隐藏 href URL

使用 DateTimeFormatter 的 java.time.format.DateTimeParseException

java - controlsfx 的新版本controlsfx-8.20.7 中缺少 CommandLink