integer 通過(guò) == 比較

2018-07-03 15:03 更新
  1. Integer a=10;
  2. Integer b=10;
  3. Integer c=new Integer(10);
  4. Integer d=new Integer(10);
  5. System.out.println(a==b);
  6. System.out.println(c==d);
  7. System.out.println(a.equals(b));
  8. System.out.println(c.equals(d));
  9. System.out.println(a.equals(c));

結(jié)果為

  1. true
  2. false
  3. true
  4. true
  5. true

== 比較的是對(duì)象的引用 當(dāng)且僅當(dāng)比較的兩個(gè)引用指向同一對(duì)象才返回true

再看一個(gè)例子

  1. Integer a = 127;
  2. Integer b = 127;
  3. Integer c = 128;
  4. Integer d = 128;
  5. System.out.println(a == b);
  6. System.out.println(c == d);

結(jié)果為

  1. true
  2. 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)