java中的最终变量
class Test {
public static final int x;
public static void main (String[] args) {
Test.x = 42;
}
}
我已经声明了一个静态final变量,当我编译它时,出现了以下错误
error: cannot assign a value to final variable x
Test.x = 42;
我想我已经找到了解决办法,但我想检查一下我是否正确
我知道静态变量如果没有初始化,会提供一个默认值。因为它是一个静态的最终int变量,所以它将被赋值为0。稍后,我尝试将值更改为42,这是不可能的,因为变量是final,不能从0更改
我是对的还是有其他答案
# 1 楼答案
我会的
# 2 楼答案
final
成员只能在其初始化或构造函数中直接分配给。因为main()
不是这两种东西,所以它不能给final
成员赋值。当代码执行时,它已经是“最终的”由于这个
final
成员是static
,除非在声明中赋值,否则必须在静态初始值设定项中赋值。例如:# 3 楼答案
最终变量在java中只能初始化一次
非静态最终变量可以在构造函数中初始化一次
静态最终变量可以在静态块中初始化一次
除了在声明时初始化它们之外
# 4 楼答案
你几乎是对的。唯一的注释是,所有实例变量都用默认值初始化,无论是静态的还是非静态的。当您将它标记为
final
时,编译器确保它只初始化一次