<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


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

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章檔案

    好友的BLOG

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    下面這段程序的打印結果是:
            obj.counter1==1
            obj.counter2==0
    百思不得其解,counter1沒有附初值,默認值也是0啊,為什么他們兩個的結果不一樣呢?
    請大俠講解下其中的原因,謝謝!
    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 楊愛友 閱讀(1384) 評論(9)  編輯  收藏 所屬分類: java相關技術

    FeedBack:
    # re: 類加載問題[未登錄] 2008-10-28 16:38 caoer
    這是因為構造函數在靜態變量初始化前執行:

    Singleton() -> obj.counter1==0 ->obj.counter1==1 ->類變量初始化
    obj.counter2==0 obj.counter2==1
    因此輸出會是obj.counter1==1
    obj.counter2==0  回復  更多評論
      
    # 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);
    }
    }
      回復  更多評論
      
    # re: 類加載問題[未登錄] 2008-10-28 16:43 hiker
    類初始化時首先于每一個靜態字段開辟一個存儲區([obj],[counter1=0],[counter2=0])。接著初始化類,所有的靜態成員按照順序初始化(按代碼聲明順序從上到下開始)。故,在初始化obj時候,counter1=1,counter2=1;按照順序,->counter1=1(不變)->counter2=0.  回復  更多評論
      
    # re: 類加載問題 2008-10-28 17:25 jestane
    執行順序問題:
    1.先執行靜態,從上往下,先執行private static Singleton obj = new Singleton();
    2.執行第一步的時候,進入構造函數
    3.在構造函數中count1和count2都被初始化為默認值0,并都++為1.
    4.再執行public static int counter1,只是一個申明,跳過。
    5.最后執行public static int counter2=0,賦值counter2為0.
    6.最后就是輸出的內容了。
      回復  更多評論
      
    # re: 類加載問題[未登錄] 2008-10-28 17:31 henry1451
    private static Singleton obj = new Singleton();

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

    把后面兩句放到第一句代碼的前面,就會輸出相同的了,輸出都為1.
    所以@caoer說法有誤碼,正確的應該是:類的初始化順序為,靜態變量(包括類變量和類對象)按按代碼聲明順序從上到下開始,再初始化其他普通變量.  回復  更多評論
      
    # re: 類加載問題[未登錄] 2008-10-29 10:47 james
    Singleton.getInstance() 時候
    開始初始化靜態變量
    當初始化到 private static Singleton obj = new Singleton();
    調用構造函數 兩個counter++
    然后順序繼續靜態變量
    counter1 不變, counter2給了它1
    所以結果是如此  回復  更多評論
      
    # 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);
    }
    }
      回復  更多評論
      
    # re: 類加載問題 2008-10-29 11:18 depeng@ncsi.com.cn
    getINT()
    Singleton()
    obj.counter1==1
    obj.counter2==1

    ------------------
    賦值的優先權和調用方法一樣
    這里一定要搞清分配空間,和賦值上。 一個是棧,一個是堆
      回復  更多評論
      
    # re: 類加載問題 2008-10-29 11:41 zhuxing
    類型初始化 VS 實例初始化 ^_^  回復  更多評論
      
    美麗涵涵童裝店
    親,說我博客名字,給你們打折!
    主站蜘蛛池模板: 亚洲精品美女久久久久| 亚洲第一AV网站| 欧美激情综合亚洲一二区| 成年女人看片免费视频播放器| 亚洲人成免费网站| 成人免费毛片内射美女APP| 亚洲成A人片在线播放器| 24小时免费直播在线观看| 国产精品亚洲专区在线观看| 成人免费午夜无码视频| 亚洲熟妇成人精品一区| 国产成人涩涩涩视频在线观看免费| 亚洲AV无码精品国产成人| 亚洲国产综合久久天堂| 久久毛片免费看一区二区三区| 精品亚洲综合久久中文字幕| 国产午夜无码精品免费看| 亚洲精品一卡2卡3卡三卡四卡| 免费看污成人午夜网站| 亚洲国产成人精品无码区花野真一 | 一区二区三区在线免费看| 亚洲一级毛片免费看| 日本免费一区尤物| 久久高潮一级毛片免费| 一区二区三区亚洲| 日韩伦理片电影在线免费观看| 在线播放免费人成视频网站| 亚洲国产日韩在线视频| 国产精品视频免费| yellow免费网站| 亚洲欧洲中文日产| 久久精品国产亚洲Aⅴ蜜臀色欲| 99久久99热精品免费观看国产| 中国亚洲呦女专区| 亚洲人成人网站色www| 麻豆最新国产剧情AV原创免费| 在线观看亚洲精品专区| 亚洲日本在线观看| 内射无码专区久久亚洲| 最近中文字幕免费完整| 美女黄频a美女大全免费皮|