我正在为 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/