以下の2行の違いを理解しようとしています。フィールドに static を追加するとゼロが返されるのはなぜですか。
private static final int this_year = Calendar.getInstance().get(Calendar.YEAR);
これから私は得る:this_year = 0;
private final int this_year = Calendar.getInstance().get(Calendar.YEAR);
そしてこれから私は得る:this_year = 2013;
最初がゼロを返す理由を説明できる人はいますか?
これを使用するコードは次のとおりです。
public class TheKing {
public static final TheKing theKing = new TheKing();
private final int beltSize;
private static final int this_year = Calendar.getInstance().get(Calendar.YEAR);
private TheKing() {
beltSize = this_year - 1930;
}
public int beltSize() {
return beltSize;
}
public static void main(String[] args) {
System.out.println("TheKing wears a size " +
theKing.beltSize() + " belt.");
}
}