国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

一個奇怪的問題

2019-11-18 13:24:59
字體:
來源:轉載
供稿:網友

  朋友, 你對java很熟嗎? 來看看下面這段代碼, 心里運行一次, 看看它的執行結果是什么?
  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;
   }
  }
  
  // 程序2
  public class MyMain
  {
   public static void main(String[] args)
   {
   Singleton obj = Singleton.getInstance();
   System.out.println("obj.counter1=="+obj.counter1);
   System.out.println("obj.counter2=="+obj.counter2);
   }
  }
  想出來結果了嗎? 那你把這段程序編譯運行一下, 看看是不是你想的答案?
  
  原理是這樣的: JAVA在編譯以后, 對靜態變量并不馬上進行賦值操作, 所以, 當你new一個實例的時候, counter1和counter2都被賦值為1(你用單步跟蹤一次就可以知道了), 這時候, 要害的問題在于 private static Singleton obj = new Singleton(); 這條語句是在counter2的賦值之前. 因此, 當生成Singleton類的實例后, 也就是說構造器被執行之后, 才會去執行public static int count2=0, 這時候counter2又被清0了, 所以, 答案就是屏幕上輸出:
  obj.counter1==1
  obj.counter2==0

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连山| 时尚| 多伦县| 旬邑县| 渝中区| 肥乡县| 余干县| 望奎县| 若尔盖县| 竹溪县| 封开县| 桐城市| 防城港市| 鄂托克前旗| 舒兰市| 修武县| 盈江县| 锡林浩特市| 布尔津县| 峨眉山市| 黔东| 邻水| 出国| 石阡县| 和林格尔县| 庆城县| 兴文县| 宜兰县| 宝兴县| 康乐县| 五常市| 齐齐哈尔市| 清新县| 喀喇沁旗| 金秀| 新蔡县| 温宿县| 姜堰市| 安康市| 兴国县| 莱州市|