java - 如果我将变量设置为 final,事情会运行得更快吗?

标签 java android

我正在为 Android (Java) 写作。

我将 int 和 float 声明为正在进行的循环的一部分。

有些声明后不需要更改。

如果我在声明时将它们全部设置为 final,事情会运行得更快吗?

[编辑]

谢谢大家。其实我也没指望它能有什么改进,我只是注意到,在浏览了各种大型项目的源码后,它还是相当普遍的。干杯

最佳答案

事情不会跑得更快。 final 关键字只是编译时语法糖。


如果它实际上是 static final,那么您可以利用编译时计算和任何引用中值的内联。因此,例如:

private static final long ONE_WEEK_IN_MILLIS = 7 * 24 * 60 * 60 * 1000L;

public void foo(Date date) {
    if (date.getTiem() > System.currentTimeMillis() + ONE_WEEK_IN_MILLIS) {
        // No idea what to do here?
    }
}

编译器会优化一个和另一个,这样它最终会像这样:

private static final long ONE_WEEK_IN_MILLIS = 604800000L;

public void foo(Date date) {
    if (date.getTiem() > System.currentTimeMillis() + 604800000L) {
        // No idea what to do here?
    }
}

如果你运行一个反编译器,你会自己看到它。

关于java - 如果我将变量设置为 final,事情会运行得更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3117770/

相关文章:

java - SPOJ上的Java错误

java - 有没有办法将 java 函数导出到库中的其他包,而不是库的用户?

java - 新的 Java 9 平台模块系统如何集成到 Maven 中?

java - 尝试将我的 main/java 类文件编译为 .jar,然后也生成 .war

android - Scrollview 在软输入键盘的回车键上自动滚动

Android:用于访问和/或备份系统设置的 API

android - 在 Android 中,如何在 onOptionsItemSelected() 中更改不同 MenuItem 的标题

java - Java 和 C++ 中双重分派(dispatch)和访问者模式的区别

android - android 中 webview 中的 Rss 提要

android - 如何从右到左缩放按钮,android动画