欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java Integer及int裝箱拆箱對比

 更新時間:2020年09月15日 10:50:54   作者:bf378  
這篇文章主要介紹了Java Integer及int裝箱拆箱對比,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

示例代碼:

class BoxIntInteger {
 
  public static void main(String[] args) {
 
    Integer a = new Integer(10111);
    int b = 10111;
    boolean equal1 = a == b;
    boolean equal2 = a.equals(b);
    System.out.println(equal1);
    System.out.println(equal2);
  }
}

反編譯字節(jié)碼:

public static void main(String args[])
{
  Integer a = new Integer(10111);
  int b = 10111;
  boolean equal1 = a.intValue() == b; 
  boolean equal2 = a.equals(Integer.valueOf(b));
  System.out.println(equal1);
  System.out.println(equal2);    
}

1:可以看出對于Integer與int使用==比較大小的話,優(yōu)先Integer拆箱。

2: 如果使用equals比較大小的話,則int裝箱。

提示:對于Integer與int之間大小比較優(yōu)先使用equals比較,否則容易出現(xiàn)空指針,例如:

Integer c= null;
System.out.println(c==1);

原因:由于Integer需要調(diào)用intValue進行拆箱,因而空指針。

Integer與Integer必須使用equals方法比較,這個就不必解釋了。但是通常我們可以看先Integer與Integer之間使用==也可以正確比較,原因是:Integer對于-128到127之間的數(shù)字在緩存中拿,不是創(chuàng)建新對象。

緩存獲取數(shù)據(jù)源碼:java.lang.Integer#valueOf(int)

public static Integer valueOf(int i) {
  if (i >= IntegerCache.low && i <= IntegerCache.high)
    return IntegerCache.cache[i + (-IntegerCache.low)];
  return new Integer(i);
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論