qua*_*dev 15
不,没有.
Java"final"并不完全等同于C++"const".以下(最终变量的延迟初始化)在Java中起作用:
final double x;
int w = 1;
if (w > 2)
{
x = 0.5;
}
else
{
x = - 0.5;
}
Run Code Online (Sandbox Code Playgroud)
但它在C++中不起作用,"final"替换为"const".
在方法声明中对变量使用"final"在Java中很有用,因为允许您在方法内创建的任何匿名类中使用此变量.
PS.我首先对Java中缺乏"const"感到失望,但后来学会了与"最终"一起生活.
PS2.链接到此线程的Java词汇表(http://mindprod.com/jgloss/immutable.html)有一个错误:不,您没有100%保证最终变量不会更改其值:
1)它从"未定义"更改为"已定义",但编译器将告诉您是否在初始化之前引用它
2)在Linux上,当存储在寄存器中时,double具有80位精度,而当存储在存储器中时则为64位.当最终的双变量被推出寄存器时,它将被截断并改变其值.正如Joel Spolsky所说,"抽象已经出现了泄漏".
Java没有像C++的const概念那样的东西.这是一个争论点,虽然有趣的是注意到.NET也没有.我相信原因是: