当前位置: 代码迷 >> J2SE >> final与类变量初始化有关问题
  详细解决方案

final与类变量初始化有关问题

热度:30   发布时间:2016-04-23 19:57:15.0
final与类变量初始化问题
---------------------------------------------程序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两个位置的输出一样吗?为什么?
通过对两程序调试,可得实数常量与对象常量、静态变量的加载顺序,但不知道问什么是这样,求解答。

------解决思路----------------------
该回复于2015-03-19 11:29:36被管理员删除
  相关解决方案