public class Hello {
public static final Hello h = new Hello();
static int i = 5;
int j = i;
private void print() {
System.out.println(i+" , "+j);
}
public static void main(String[] args) {
h.print();
}
}
このコード出力は 5 , 0 です。理由が静的である場合、クラスで最初にロードされ、i は初期化され、j は初期化されません。ただし、静的を i から削除すると、
public class Hello {
public static final Hello h = new Hello();
int i = 5;
int j = i;
private void print() {
System.out.println(i+" , "+j);
}
public static void main(String[] args) {
h.print();
}
}
なぜ出力が5,5なのか。その後、i と j が初期化されます。理由を説明してください。