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 “==”就是比較引用,沒(méi)有重載過(guò),而由于-128至127內(nèi)的Interger都是同一個(gè)對(duì)象引用,
所以第一個(gè)比較式true 之外的Interger 則不是同一個(gè)對(duì)象,所以比較為false
重載的應(yīng)該是equals()方法,所以如果用equals來(lái)比較應(yīng)該都為true.
在JDK源碼中Integer類有一個(gè)內(nèi)部類IntegerCache,它默認(rèn)創(chuàng)建了一個(gè)-128~127的Integer對(duì)象數(shù)組。
只要比較的是在這256個(gè)數(shù)內(nèi),就直接在對(duì)象池里查找并返回該對(duì)象。
這是Java處于性能的考慮,目的是節(jié)省內(nèi)存。
至于范圍之外的,不同的引用就不相等了。
posted on 2009-05-24 13:50 BruceLeey 閱讀(143) 評(píng)論(0) 編輯 收藏 所屬分類: JVM