Tho*_*hor 4 java variables static final initialization
我正在尝试在Java中初始化不同类型的变量.我可以在构造函数中初始化final变量(例如final int b)和静态变量(例如static int c)但我不能在构造函数中初始化静态final变量(例如static final int d).IDE还会显示错误消息.
为什么Java不允许在构造函数中初始化静态最终变量?
public class InitialisingFields {
int a;
final int b;
static int c;
static final int d;
InitialisingFields(){
a = 1;
b = 2;
c = 3;
d = 4;
}
public static void main(String[] args) {
InitialisingFields i = new InitialisingFields();
}
}
Run Code Online (Sandbox Code Playgroud)
错误信息:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - cannot assign a value to final variable d
at JTO.InitialisingFields.<init>(InitialisingFields.java:22)
at JTO.InitialisingFields.main(InitialisingFields.java:26)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)
静态变量由类的所有实例共享,因此每次创建类的实例时,将再次分配相同的变量.由于它是最终的,因此只能分配一次.因此不允许这样做.
static final变量应保证只分配一次.因此,可以在声明它们的同一表达式中指定它们,也可以在静态初始化程序块中指定它们,该块仅执行一次.
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |