如果我查看 OpenJDK 或 Hibernate 或 Apache 中的 java 源代码,我还没有看到任何声明为 final 的局部变量。
这表明一些最广泛使用的 java 软件库的开发人员:
不要相信 final 关键字会提高可读性。
不相信它会显着提高性能。
为什么 stackoverflow 上的大多数贡献者都认为应该使用它(基于最高投票的响应)?
如果我查看 OpenJDK 或 Hibernate 或 Apache 中的 java 源代码,我还没有看到任何声明为 final 的局部变量。
这表明一些最广泛使用的 java 软件库的开发人员:
不要相信 final 关键字会提高可读性。
不相信它会显着提高性能。
为什么 stackoverflow 上的大多数贡献者都认为应该使用它(基于最高投票的响应)?
可能是因为在单词中打五个LONG字母很麻烦final
......为什么他们会经历写作的痛苦
final int x;
当它的打字量是打字量的两倍时
int x;
?
我们开发人员很懒惰,你知道... :P
不要相信 final 关键字会提高可读性。
有些人(比如我自己)发现过多final
的 s 会降低可读性。
不相信它会显着提高性能。
final
局部变量不会提高性能。
据我所知, final 关键字对变量的运行时性能没有影响。
我相信它的主要目的是帮助您捕捉错误。如果您知道某些事情永远不会改变,那么您将其标记为这样。类似于我们尽可能使用注释的原因,任何时候我们可以用运行时错误换取编译时错误,我们都会这样做。当你在处理它时发现一个错误,它在你的脑海中是新鲜的,它并没有破坏某人的数据,导致你失去客户,是的,这是一件非常好的事情。你得到编译错误,你修复它,你继续前进,你不会破坏夜间构建,是的,这些都是好事。
final 关键字有两种用途:
情况 2 通常应用于成员变量以使对象不可变(至少部分)或应用于方法参数以防止意外分配。
如果是局部变量(即方法范围而不是参数),通常不需要或不需要,因为这些变量可能会在方法中更改(否则您可能不需要它们,除非缓存方法范围的引用)。
我怀疑声明一个局部变量final
是否会提高性能。由于存在final
,Java 编译器已经被要求能够判断一个变量是否可能被多次分配,或者可能没有被初始化。因此,实际上将本地声明final
为 as并不会告诉编译器它不知道的任何内容——这只是为了读者的利益。
现在它是否有时会提高可读性,这是更主观的。在一段复杂的代码中,最好(对自己或未来的读者)承诺一个变量只写一次。但是简化代码可能会更好,这样无论如何都很明显。