一泳炉、Integer equals()方法判斷的是兩個(gè)Integer對(duì)象值是否相等
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
二、Integer==判斷兩個(gè)對(duì)象的地址是否相等
2.1 兩個(gè)通過new Integer()的對(duì)象
Integer a= new Integer(200);
Integer b= new Integer(200);
System.out.print(a==b);
輸出false
通過new 一個(gè)對(duì)象會(huì)為對(duì)象分配一個(gè)地址箩帚,不同的new會(huì)生成不同的地址
2.2 兩個(gè)通過賦值的對(duì)象
分下面兩種對(duì)象
Integer a= 200;
Integer b= 200;
System.out.print(a==b);
輸出為false
Integer a= 100;
Integer b= 100;
System.out.print(a==b);
輸出為true
通過賦值的生成對(duì)象會(huì)自動(dòng)封箱伦连,會(huì)經(jīng)過Integer valueOf()方法
public static Integer valueOf(int i) {
if (i >= -128 && i <= 127)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
可以看出在-128-127之間會(huì)取緩存池里的緩存對(duì)象欺殿,同一個(gè)值只有一個(gè)緩存對(duì)象搭儒。
所以通過賦值生成的對(duì)象會(huì)自動(dòng)封箱
a 如果值為-128-127之間會(huì)取同一個(gè)地址,兩個(gè)對(duì)象相等,如果不在之間則會(huì)new 一個(gè)對(duì)象尉辑,兩個(gè)地址不相同
2.3 一個(gè)對(duì)象一個(gè)基本類型
Integer a= 200;
int b= 200;
System.out.print(a==b);
輸出為true
比較時(shí)對(duì)象a會(huì)自動(dòng)卸箱,相當(dāng)于調(diào)用了
public int intValue() {
return value;
}
比較是值