也许我的问题在2016年会非常愚蠢,因为存在许多类似的问题,但我很难理解何时应该在方法中使用最终变量而不是局部变量。哪一个会更有效率,何时应该使用它。
public void setmethod(int var)
{
final int variable = var;
System.out.println(variable);
}
public void setmethod(int var)
{
int variable = var;
System.out.println(variable);
}
我知道输出中的结果将是相同的,而且最终字段 - 使相同的字段引用不可变但在某些情况下哪一个选项更有效率,为什么?我有点困惑
答案 0 :(得分:3)
这里有几件事:
此时,Java编译器非常复杂,如果有任何性能提升,除非你处于可以想象的最严格的循环中,否则它是难以察觉的。
在您考虑优化之前,您应该在整个代码中查找其他更多宏优化(例如 - 减少http请求,数据库请求等)。我可以保证你会更多地寻找这些东西,而不是关键词。
其次,我认为你的意思是:
public void setmethod(final int var)
{
System.out.println(var);
}
第三,我建议你总是使用final
关键字,除非你真的不能。这使得任何人阅读时代码的意图更加清晰。它陈述了关于代码中可能发生什么和不可发生什么的合同。
从清晰的角度来看,尽可能使变量和字段final
变得恰到好处。它与性能无关。
我一直认为这是Java的设计缺陷,默认情况下变量是可变的。相反,默认情况下,变量应该是final,而Java应该引入mutable
关键字。
答案 1 :(得分:0)
你需要明确一件事,那就是你的代码片段中的两个变量都是本地的。
就您的问题而言,您可以在任何变量之前使用final
关键字,其值不会更改并在程序执行期间保持不变。声明任何变量final
后,您将无法更改其值。
有关final
的更多详情,请参阅When should one use final for method parameters and local variables?
答案 2 :(得分:0)
如果您确定不应更改变量值,那么使用final
是一种很好的做法。假设您有一个复杂的方法,如果您不小心尝试更改最终变量的值,这将导致编译错误。