integer和int比較的一些淺析

          Integer是int的封裝對象,兩個對象==比較的是棧的值
          Integer a = new Integer(1);
          Integer b = new Integer(1);
          a與b存的是Integer的堆中的地址,而不是值
          a、b指向堆中的地址顯然不同所以 a==b 為false

          int c = 1; int為值類型引用類型Integer與值類型int比較顯然比較的是值
          因為int在堆中是不開辟內存的,他在棧中的值則為他本身的值
          所以a==c比較的是他們各自的value, a==c為true

          Integer e=1; 這個比較特殊,直接賦值 它有獨立的內存,每次賦值時將檢查內存中是否有值跟他匹配的,若有則把此內存地址付給e,若沒有,開辟新的內存

          你可以嘗試下面的例子:
          Integer t = 1;
          Integer t1 = 1;
          t==t1 為true,如上所說,此時t與t1指向的是同一塊內存

          new 一定是開辟新的內存,直接賦值則不一定開辟新的內存
          因為a的引用指向堆,而e指向專門存放他的內存,所以他們的內存地址不一樣
          所以a==e為false

          c==e等同于 a==c,一個引用類型一個值類型

          posted on 2013-12-09 10:47 朝陽zzz 閱讀(199) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2013年12月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 泰州市| 张北县| 邵东县| 深泽县| 霸州市| 龙门县| 楚雄市| 阿图什市| 明溪县| 巫溪县| 德昌县| 徐汇区| 昌平区| 久治县| 西青区| 壤塘县| 汝南县| 公安县| 灵丘县| 维西| 昌吉市| 资阳市| 惠来县| 汉川市| 隆化县| 丹寨县| 涞水县| 元朗区| 桓台县| 保山市| 静海县| 宁化县| 南充市| 旬邑县| 深泽县| 甘南县| 莒南县| 元谋县| 太白县| 玉溪市| 莱芜市|