解决方法
不,没有.
@H_404_7@Java“final”并不完全等同于C“const”.以下(最终变量的延迟初始化)在Java中起作用:
final double x; int w = 1; if (w > 2) { x = 0.5; } else { x = - 0.5; }@H_404_7@但是在“final”替换为“const”的C中不起作用. @H_404_7@在方法声明中对变量使用“final”可能对Java有用,因为允许您在方法内创建的任何匿名类中使用此变量. @H_404_7@PS.我首先对Java中缺少“const”感到失望,但后来学会了与“final”一起生活. @H_404_7@PS2.在这个线程中链接的Java词汇表(http://mindprod.com/jgloss/immutable.html)有一个错误:不,你没有给出100%的保证,最终的变量不会改变它的值: @H_404_7@1)它从“未定义”更改为“已定义”,但是编译器会在初始化前引用它 @H_404_7@2)在Linux上,当存储在一个寄存器中时,双精度为80位,但存储在内存中则为64位.当最后一个双变量被推出寄存器时,它将被截断并更改其值.正如乔尔·斯波尔斯基(Joel Spolsky)所说,“抽象已经发生了泄漏”.