import java.util.Calendar;
public class Elvis {
//public static Elvis INSTANCE = new Elvis();
private final int beltSize;
private static final int CURRENT_YEAR = Calendar.getInstance().get(
Calendar.YEAR);
private Elvis() {
beltSize = CURRENT_YEAR - 1930;
}
public int beltSize() {
return beltSize;
}
public static void main(String[] args) {
System.out.println("Elvis wears a size " + new Elvis().beltSize()
+ " belt.");
}
}
输出结果为:
Elvis wears a size 83 belt.
但
public class Elvis {
public static Elvis INSTANCE = new Elvis();
private final int beltSize;
private static final int CURRENT_YEAR = Calendar.getInstance().get(
Calendar.YEAR);
private Elvis() {
beltSize = CURRENT_YEAR - 1930;
}
public int beltSize() {
return beltSize;
}
public static void main(String[] args) {
System.out.println("Elvis wears a size " + INSTANCE.beltSize()
+ " belt.");
}
}
输出结果为:
Elvis wears a size -1930 belt.
求深入剖析,谢谢各位了先。
第一段代码,没什么说的,常量在构造方法赋值的基本用法。
因为:INSTANCE是静态变量,不属于任何类,所以可以直接使用"INSTANCE.beltSize()"
将要执行它INSTANCE.beltSize()时,静态属性INSTANCE开始初始化,执行第六行的语句“new Elvis2()”
执行构造方法Elvis2(),执行Elvis2()时,CURRENT_YEAR的值还为0,所以结果是-1930。
感谢你的细心回答,但你可以把他看成是两个程序,没有关联,我看着有点点乱,能一个一个的解释下吗?~3q了!
本回答被网友采纳