java integer == integer返回 true 還是 false?

理論:

IntegerCache 緩存
JAVA的Integer有IntegerCache會緩存-128~127之間的對象。
如:Integer x = 100,會調用Integer的valueOf()方法,這個方法就是返回一個Integer對象,但是在返回前,作了一個判斷,判斷要賦給對象的值是否在[-128,127]區間中,且IntegerCache(是Integer類的內部類,裏面有一個Integer對象數組,用於存放已經存在的且範圍在[-128,127]中的對象)中是否存在此對象,如果存在,則直接返回引用,否則,創建一個新對象返回。

 

實踐:

        Integer a=2;
            Integer b=2;
            System.out.println(a==b);
            Integer c=18;
            Integer d=18;
            System.out.println(c==d);
            Integer e=127;
            Integer f=127;
            System.out.println(e==f);
            Integer g=128;
            Integer h=128;
            System.out.println(g==h);
            Integer i=3;
            Integer j=3;
            System.out.println(i==j);

得出
true
true
true
false
true 

 

結論

在 [-128,127]區間中 進行匹配用==  是可以的,超過了就會false,可以改成  .equals()   就可以了

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章