<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 楊愛友 閱讀(1384) 評論(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ù)  更多評論
      
    美麗涵涵童裝店
    親,說我博客名字,給你們打折!
    主站蜘蛛池模板: 亚洲va中文字幕无码久久不卡| 拨牐拨牐x8免费| 亚洲人成网站观看在线播放| 亚洲欧美成人一区二区三区| 成人片黄网站A毛片免费| 亚洲理论片中文字幕电影| 最近中文字幕mv免费高清视频8| 中文字幕亚洲综合久久| 50岁老女人的毛片免费观看| 亚洲福利秒拍一区二区| 一本岛高清v不卡免费一三区| 99热亚洲色精品国产88| 久久这里只有精品国产免费10| 亚洲香蕉久久一区二区| 成年性生交大片免费看| 真正全免费视频a毛片| 亚洲国产一区视频| 中文成人久久久久影院免费观看| 久久精品亚洲综合专区| 亚洲一区免费视频| 亚洲av无码专区在线电影天堂| 亚洲Av无码乱码在线znlu| 最近中文字幕大全免费版在线| 亚洲精品福利在线观看| 午夜一级免费视频| 亚洲精品国产日韩无码AV永久免费网| 国产精品久久久亚洲| 91精品免费国产高清在线| 亚洲色无码专区一区| 亚洲中文字幕无码久久精品1| 99热免费在线观看| 亚洲A∨精品一区二区三区下载 | 国产精品美女午夜爽爽爽免费| 亚洲av成人中文无码专区| 国产亚洲精品资源在线26u| 在线观看成人免费视频不卡| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 高清国语自产拍免费视频国产| 久久免费观看视频| 亚洲乱人伦精品图片| 久久亚洲2019中文字幕|