<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    美麗涵涵童裝店--說我博客名字,給你們打折!
    隨筆 - 82  文章 - 266  trackbacks - 0
    <2008年10月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678


    點擊這里給楊愛友發(fā)消息
    美麗涵涵童裝店
    說我博客名字,給你們打折!

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章檔案

    好友的BLOG

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    下面這段程序的打印結(jié)果是:
            obj.counter1==1
            obj.counter2==0
    百思不得其解,counter1沒有附初值,默認(rèn)值也是0啊,為什么他們兩個的結(jié)果不一樣呢?
    請大俠講解下其中的原因,謝謝!
    public class Singleton {
      private static Singleton obj = new Singleton();
      public static int counter1;
      public static int counter2 = 0;

      private Singleton() {
        counter1++;
        counter2++;
      }

      public static Singleton getInstance() {
        return obj;
      }

      public static void main(String[] args) {
        Singleton.getInstance();
        System.out.println("obj.counter1==" + counter1);
        System.out.println("obj.counter2==" + counter2);
      }
    }
    posted on 2008-10-28 15:26 楊愛友 閱讀(1383) 評論(9)  編輯  收藏 所屬分類: java相關(guān)技術(shù)

    FeedBack:
    # re: 類加載問題[未登錄] 2008-10-28 16:38 caoer
    這是因為構(gòu)造函數(shù)在靜態(tài)變量初始化前執(zhí)行:

    Singleton() -> obj.counter1==0 ->obj.counter1==1 ->類變量初始化
    obj.counter2==0 obj.counter2==1
    因此輸出會是obj.counter1==1
    obj.counter2==0  回復(fù)  更多評論
      
    # re: 類加載問題 2008-10-28 16:39 日月雨林@gmail.com
    你用過IDE 的debug 功能沒有?一用你就知道為什么了。
    改了一下:
    public class Singleton {

    public static int counter1;
    public static int counter2 = 0;

    private Singleton() {
    counter1++;
    counter2++;
    }

    public static Singleton getInstance() {
    Singleton obj = new Singleton();
    return obj;
    }

    public static void main(String[] args) {
    Singleton.getInstance();
    System.out.println("obj.counter1==" + counter1);
    System.out.println("obj.counter2==" + counter2);
    }
    }
      回復(fù)  更多評論
      
    # re: 類加載問題[未登錄] 2008-10-28 16:43 hiker
    類初始化時首先于每一個靜態(tài)字段開辟一個存儲區(qū)([obj],[counter1=0],[counter2=0])。接著初始化類,所有的靜態(tài)成員按照順序初始化(按代碼聲明順序從上到下開始)。故,在初始化obj時候,counter1=1,counter2=1;按照順序,->counter1=1(不變)->counter2=0.  回復(fù)  更多評論
      
    # re: 類加載問題 2008-10-28 17:25 jestane
    執(zhí)行順序問題:
    1.先執(zhí)行靜態(tài),從上往下,先執(zhí)行private static Singleton obj = new Singleton();
    2.執(zhí)行第一步的時候,進(jìn)入構(gòu)造函數(shù)
    3.在構(gòu)造函數(shù)中count1和count2都被初始化為默認(rèn)值0,并都++為1.
    4.再執(zhí)行public static int counter1,只是一個申明,跳過。
    5.最后執(zhí)行public static int counter2=0,賦值counter2為0.
    6.最后就是輸出的內(nèi)容了。
      回復(fù)  更多評論
      
    # re: 類加載問題[未登錄] 2008-10-28 17:31 henry1451
    private static Singleton obj = new Singleton();

    public static int counter1;
    public static int counter2 = 0;

    把后面兩句放到第一句代碼的前面,就會輸出相同的了,輸出都為1.
    所以@caoer說法有誤碼,正確的應(yīng)該是:類的初始化順序為,靜態(tài)變量(包括類變量和類對象)按按代碼聲明順序從上到下開始,再初始化其他普通變量.  回復(fù)  更多評論
      
    # re: 類加載問題[未登錄] 2008-10-29 10:47 james
    Singleton.getInstance() 時候
    開始初始化靜態(tài)變量
    當(dāng)初始化到 private static Singleton obj = new Singleton();
    調(diào)用構(gòu)造函數(shù) 兩個counter++
    然后順序繼續(xù)靜態(tài)變量
    counter1 不變, counter2給了它1
    所以結(jié)果是如此  回復(fù)  更多評論
      
    # re: 類加載問題 2008-10-29 11:12 depeng@ncsi.com.cn
    public class Singleton {

    public static int counter1;
    public static int counter2 = getINT();

    private static Singleton obj = new Singleton();

    private Singleton() {
    System.out.println("Singleton()" );
    counter1++;
    counter2++;
    }

    public static int getINT(){
    System.out.println("getINT()" );
    return 0;
    }

    public static void main(String[] args) {
    System.out.println("obj.counter1==" + counter1);
    System.out.println("obj.counter2==" + counter2);
    }
    }
      回復(fù)  更多評論
      
    # re: 類加載問題 2008-10-29 11:18 depeng@ncsi.com.cn
    getINT()
    Singleton()
    obj.counter1==1
    obj.counter2==1

    ------------------
    賦值的優(yōu)先權(quán)和調(diào)用方法一樣
    這里一定要搞清分配空間,和賦值上。 一個是棧,一個是堆
      回復(fù)  更多評論
      
    # re: 類加載問題 2008-10-29 11:41 zhuxing
    類型初始化 VS 實例初始化 ^_^  回復(fù)  更多評論
      
    美麗涵涵童裝店
    親,說我博客名字,給你們打折!
    主站蜘蛛池模板: 成人自慰女黄网站免费大全| 成人免费的性色视频| 国产亚洲一区二区手机在线观看 | 国产午夜免费高清久久影院| 18gay台湾男同亚洲男同| 成年人网站在线免费观看| 四虎影视久久久免费观看| 久久丫精品国产亚洲av| 四虎永久免费影院在线| 99精品视频在线视频免费观看| 亚洲日韩精品国产一区二区三区| 亚洲中文字幕无码久久综合网| 亚洲精品视频免费在线观看| 无码人妻一区二区三区免费视频| 亚洲国产成人久久综合一| 国产高清在线免费视频| 久久久久免费精品国产小说| 春暖花开亚洲性无区一区二区| 亚洲国产成人精品不卡青青草原| 国产乱子伦精品免费女| 91av视频免费在线观看| 一级毛片免费不卡直观看| 亚洲91精品麻豆国产系列在线| 在线观看亚洲成人| 日本成人免费在线| 亚洲高清免费在线观看| 久99久无码精品视频免费播放| 精品亚洲456在线播放| 亚洲成亚洲乱码一二三四区软件| 国产v片免费播放| 亚州免费一级毛片| a国产成人免费视频| 亚洲精品无码国产片| 亚洲电影在线播放| 久久久久亚洲精品影视| 亚洲一级Av无码毛片久久精品 | 国产啪亚洲国产精品无码 | 亚洲国产综合人成综合网站| 最近免费中文字幕大全视频| 亚洲视频免费在线观看| 免费播放在线日本感人片|