public classPrice {
//类成员是 Price实例
finalstaticPrice INSTANCE=new Price(2.8);//1
//定义一个类变量
static double initPrice=20;//2
//定义该Price的currentPrice实例变量
double currentPrice;
public Price(double discount){
System.out.println("我是构造器!!!!");
System.out.println(initPrice);
currentPrice=initPrice-discount;
}
public static void main(String[] args) {
//通过price的INSTANCE访问currentPrice实例变量
System.out.println(Price.INSTANCE.currentPrice);
//
Pricep=new Price(2.8);
//通过显示创建的price实例访问currentPrice实例变量
System.out.println(p.currentPrice);
}
}
输出:我是构造器!!!!
0.0
-2.8
我是构造器!!!!
20.0
17.2
当交换1和2的位置后输出:我是构造器!!!!
20.0
17.2
我是构造器!!!!
20.0
17.2
刚开始我不明白怎么回事,后来师傅告诉我说,因为static先new了一个对象,所以先加载构造器的代码,然后再给static的对象赋值,所以出现了以上的结果。