在Java中,我们看到许多final可以使用关键字的地方,但它的使用并不常见.
例如:
String str = "abc";
System.out.println(str);
在上述情况下,str可以final但通常不会这样做.
当一个方法永远不会被覆盖时,我们可以使用final关键字.类似地,如果一个类不会被继承.
在任何或所有这些案例中使用final关键字是否真的能提高性能?如果是这样,那怎么样?请解释.如果正确使用final真正重要的性能,应在Java程序员开发什么习惯,使关键字的最好用?
今天,我和我的同事讨论了finalJava中关键字的用法,以改进垃圾收集.
例如,如果您编写如下方法:
public Double doCalc(final Double value)
{
   final Double maxWeight = 1000.0;
   final Double totalWeight = maxWeight * value;
   return totalWeight;  
}
声明方法中的变量final将有助于垃圾收集在方法退出后从方法中未使用的变量清除内存.
这是真的?
我一直在寻找一些Java基本集合(的宝库,fastutil,HPPC)和我已经注意到,类变量有时声明为图案final的局部变量.例如:
public void forEach(IntIntProcedure p) {
    final boolean[] used = this.used;
    final int[] key = this.key;
    final int[] value = this.value;
    for (int i = 0; i < used.length; i++) {
        if (used[i]) {
          p.apply(key[i],value[i]);
        }
    }
}
我已经完成了一些基准测试,看起来这样做会稍快一点,但为什么会这样呢?我试图理解如果函数的前三行被注释掉,Java将采取哪些不同的做法.
注意:这似乎与这个问题类似,但这是针对c ++的,并没有说明它们被声明的原因final.
类文件格式是否为使用变量的最终关键字提供支持?
 
或者它只是从代码中推断出变量的有效终结性而JIT编译器基于它执行优化?
这里,在类文件格式文档中,他们提到了关于final关键字,但仅限于将其与final块和final类一起使用的情况.最终变量
 
没有任何内容.