---------------------------------------------程序1------------------------------------------------
public class PriceTest {
public static void main(String[] args) {
//输出位置1
System.out.println(Price.INSTANCE.currentPrice);
Price p = new Price(2.8);
//输出位置2
System.out.println(p.currentPrice);
}
}
class Price {
public Price(double discount) {
currentPrice = initPrie - discount;
}
static final Price INSTANCE = new Price(2.8);
static double initPrie = 20;
double currentPrice;
}
问题一:请问程序1两个位置的输出一样吗?为什么?
-------------------------------------------华丽分割线-----------------------------------
----------------------------------------------程序2--------------------------------
public class PriceTest {
public static void main(String[] args) {
//输出位置1
System.out.println(Price.INSTANCE.currentPrice);
Price p = new Price(2.8);
//输出位置2
System.out.println(p.currentPrice);
}
}
class Price {
public Price(double discount) {
currentPrice = initPrie - discount;
}
static final Price INSTANCE = new Price(2.8);
static final double initPrie = 20;
double currentPrice;
}
问题二:请问程序2两个位置的输出一样吗?为什么?
通过对两程序调试,可得实数常量与对象常量、静态变量的加载顺序,但不知道问什么是这样,求解答。
------解决思路----------------------