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