W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Integer a=10;
Integer b=10;
Integer c=new Integer(10);
Integer d=new Integer(10);
System.out.println(a==b);
System.out.println(c==d);
System.out.println(a.equals(b));
System.out.println(c.equals(d));
System.out.println(a.equals(c));
結(jié)果為
true
false
true
true
true
== 比較的是對象的引用 當(dāng)且僅當(dāng)比較的兩個(gè)引用指向同一對象才返回true
再看一個(gè)例子
Integer a = 127;
Integer b = 127;
Integer c = 128;
Integer d = 128;
System.out.println(a == b);
System.out.println(c == d);
結(jié)果為
true
false
Integer i = XXX 看看Integer 的源代碼就知道了, 其實(shí)就是Integer 把-128-127(一個(gè)字節(jié)的二進(jìn)制補(bǔ)碼) 之間的每個(gè)值都建立了一個(gè)對應(yīng)的Integer 對象, 類似一個(gè)緩存. 由于Integer 是不可變類, 因此這些緩存的Integer 對象可以安全的重復(fù)使用. Integer i = XXX, 就是Integer i = Interger.valueOf(XXX), 首先判斷XXX 是否在-128-127 之間, 如果是直接return 已經(jīng)存在的對象, 所以是同一個(gè)引用. 否則就只能 new 一個(gè)了, 那就是不同的引用了.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: