这些是主要因素:
- 成员变量(默认为确定)
- 静态变量(默认为OK)
- 最终成员变量(未初始化,必须在构造函数上设置)
- 最终静态变量(未初始化,必须在静态块{}上设置)
- 局部变量(未初始化)
注意1:必须在每个实现的构造函数上初始化最终成员变量!
注意2:您必须在构造函数本身的块内初始化最终成员变量,而不是调用用于对其进行初始化的其他方法。例如,这是无效的:
private final int memberVar;
public Foo() {
init();
}
private void init() {
memberVar = 10;
}
注3:数组是Java中的对象,即使它们存储原语也是如此。
注意4:初始化数组时,其所有项均设置为默认值,而与成为成员或本地数组无关。
我将附上一个代码示例,介绍上述情况:
public class Foo {
private int a;
private static int b;
private Object c;
private static Object d;
private int[] e;
private static int[] f;
private final int g;
private final static int h;
private final Object i;
private final static Object j;
private final int[] k;
private final static int[] l;
static {
h = 5;
j = new Object();
l = new int[5];
}
public Foo() {
g = 10;
i = new Object();
k = new int[10];
}
public Foo(boolean aBoolean) {
g = 15;
i = new Object();
k = new int[15];
}
public static void main(String[] args) {
int m;
Object n;
int[] o;
m = 20;
n = new Object();
o = new int[20];
}
}