Keep Moving

          一個人倘若需要從思想中得到快樂,那么他的第一個欲望就是學習。
          隨筆 - 16, 文章 - 10, 評論 - 1, 引用 - 0
          數據加載中……

          Java Integer


          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;
          */

           

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

          所以第一個比較式true 之外的Interger 則不是同一個對象,所以比較為false
          重載的應該是equals()方法,所以如果用equals來比較應該都為true.

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

           

           

           

           

           

          posted on 2009-05-24 13:50 BruceLeey 閱讀(143) 評論(0)  編輯  收藏 所屬分類: JVM


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


          網站導航:
           
          主站蜘蛛池模板: 织金县| 牡丹江市| 内江市| 大庆市| 吉木萨尔县| 图木舒克市| 曲松县| 容城县| 汝州市| 永胜县| 英吉沙县| 大埔县| 崇文区| 南投市| 汝州市| 淳安县| 兰溪市| 涟水县| 宁晋县| 甘肃省| 和政县| 洛南县| 盱眙县| 富蕴县| 巴青县| 安徽省| 富锦市| 绥江县| 洪江市| 综艺| 蕉岭县| 页游| 枣阳市| 疏附县| 巴彦县| 郓城县| 五莲县| 亚东县| 资中县| 宣威市| 红原县|