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 閱讀(200) 評論(0)  編輯  收藏


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


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

          導航

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 专栏| 屏东县| 遂宁市| 雅安市| 东乌珠穆沁旗| 道孚县| 蒙自县| 车致| 开化县| 广东省| 庆城县| 普安县| 肃宁县| 峨边| 木里| 崇信县| 忻州市| 奉化市| 那坡县| 平阳县| 元氏县| 靖江市| 长丰县| 乌拉特前旗| 方山县| 汕尾市| 土默特右旗| 三穗县| 饶河县| 琼海市| 兴和县| 陆川县| 晋宁县| 金湖县| 斗六市| 灵寿县| 新闻| 四平市| 灯塔市| 逊克县| 包头市|