integer 通過(guò) == 比較

2018-07-03 15:03 更新
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

== 比較的是對(duì)象的引用 當(dāng)且僅當(dāng)比較的兩個(gè)引用指向同一對(duì)象才返回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è)對(duì)應(yīng)的Integer 對(duì)象, 類似一個(gè)緩存. 由于Integer 是不可變類, 因此這些緩存的Integer 對(duì)象可以安全的重復(fù)使用. Integer i = XXX, 就是Integer i = Interger.valueOf(XXX), 首先判斷XXX 是否在-128-127 之間, 如果是直接return 已經(jīng)存在的對(duì)象, 所以是同一個(gè)引用. 否則就只能 new 一個(gè)了, 那就是不同的引用了.

Reference

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)