普遍认为将成员变量标记为final具有性能优势,因为它们不需要从主内存重新加载。我的问题是,当变量显然不会改变时,javac或Hotspot是否会自动为我完成这个操作。例如,在下面的类中,javac会使'x'成为final吗?
public class MyClass {
private String x;
MyClass(String x) {
this.x = x;
}
public String getX() {
return x;
}
}
另外一个问题是,有没有实证证据表明将成员标记为final可以使代码运行更快?在进行远程调用或数据库查询的任何应用程序中,任何好处都肯定是微不足道的。