隨筆-48  評論-26  文章-0  trackbacks-0
            先看代碼再解釋。
           
          public class Test {
              
          public static void main(String[] args) {
                  Integer i1 
          = 100;
                  Integer i2 
          = 100;
                  
          if (i1 == i2) {
                      System.out.println(
          "i1==i2");
                  } 
          else {
                      System.out.println(
          "i1!=i2");
                  }

                  Integer i3 
          = 200;
                  Integer i4 
          = 200;
                  
          if (i3 == i4) {
                      System.out.println(
          "i3==i4");
                  } 
          else {
                      System.out.println(
          "i3!=i4");
                  }
              }
          }

          /**
          *  打印結果
          *  i1==i2;
          *  i3!=i4;
          */
           

          “==”就是比較引用,沒有重載過,而由于-128至127內的Interger都是同一個對象引用,

            所以第一個比較式true 之外的Interger 則不是同一個對象,所以比較為false。


            重載的應該是equals()方法,所以如果用equals來比較應該都為true。

            在JDK源碼中Integer類有一個內部類IntegerCache,它默認創建了一個-128~127的Integer對象數組。
            只要比較的是在這256個數內,就直接在對象池里查找并返回該對象。
            這是Java處于性能的考慮,目的是節省內存。
            至于范圍之外的,不同的引用就不相等了。

          posted on 2009-09-26 14:14 Worker 閱讀(199) 評論(0)  編輯  收藏 所屬分類: J2SE/J2EE

          主站蜘蛛池模板: 建湖县| 南阳市| 双柏县| 冷水江市| 精河县| 苍南县| 崇阳县| 东源县| 永福县| 乐昌市| 集贤县| 公主岭市| 黔东| 吉首市| 松潘县| 延吉市| 类乌齐县| 大田县| 华坪县| 舒兰市| 台前县| 西贡区| 文成县| 邹平县| 高平市| 舒兰市| 大悟县| 左贡县| 通海县| 邛崃市| 岐山县| 西乡县| 大姚县| 钟山县| 武汉市| 望城县| 偏关县| 大厂| 新化县| 金溪县| 集贤县|