为什么
final
变量默认初始化?如果你对这个常量是默认值感到满意,那么默认构造函数不应该将它们初始化为默认值。限制最终变量分配的原因为什么你必须在构造函数中初始化它们?为什么你不能在使用它们之前像其他变量一样初始化它们?
ex。
public class Untitled {
public final int zero;
public static void main(String[] args)
{
final int a; // this works
a = 4; // this works, but using a field doesn't
new Untitled();
}
}
Untitled.java:2: variable a might not have been initialized
- 为什么你必须初始化变量
static final
他们在声明时?为什么不能在用任何其他方法使用它们之前对它们进行初始化?
ex。
public class Untitled
{
public final static int zero;
public static void main(String[] args)
{
zero = 0;
}
}
Untitled.java:8: cannot assign a value to final variable zero
我在问这些问题,因为我试图找到一个逻辑/概念的原因,为什么这不起作用,为什么它不被允许。不仅仅因为它不是。
请记住,'主()'是*不*构造函数。很明显,你不能在一个不是构造函数的方法中分配一个'final'变量。 – 2012-03-11 02:22:18