javac或Hotspot会自动添加'final'作为不变变量的优化吗?

bar*_*lar 5 java compiler-construction final jvm-hotspot

共识似乎是将成员变量标记为final有一个性能优势,因为它们永远不需要从主内存重新加载.我的问题是,当变量无法改变时,javac或Hotspot会自动为我做这件事.例如,javac将在下面的这堂课中制作'x'决赛......

public class MyClass {
   private String x;

   MyClass(String x) {
      this.x = x;
   }

   public String getX() {
      return x;
   }
}
Run Code Online (Sandbox Code Playgroud)

在次要问题上,有没有人提出经验证据表明成员最终会使代码运行得更快?在进行远程调用或数据库查找的任何应用程序中,任何好处肯定都可以忽略不计?

Ale*_*rov 1

AFAIK,他们没有,因此,你会受到轻微的惩罚。不过,这可以通过 IDE 工具自动完成,例如 Eclipse 的“清理”功能。