熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java中的AutoBoxing

2013-11-23 19:21:35  來源: Java核心技術 

  理解Java中Integer和int的Autoboxing有助於java新手理解java內存機制

  在Java中的Integer和int是可以Autoboxing和boxing的這裡要注意的是

  在 int自動裝箱成Integer的過程中如果數值是在~之間的值的話那麼會在在內存中供重用用語句說明如下

  //i and i is in the range of ~ while i and i not

  Integer i = ;

  Integer i = ;

  Integer i = ;

  Integer i = ;

  //compare the i whit i

  if(i == i)        Systemoutprint(i == i);

  else                Systemoutprintln(i != i);

  //compare the i whit i

  if(i == i)        Systemoutprint(i == i);

  else         Systemoutprintln(i != i);

  輸 出的結果便是  i == i   i != i

  當然看這段代碼的時候要明白==的用法

  另 外要注意的一點的是在不涉及Autoboxing的時候Integer數值沒有以上所述的特性如還是以上的代碼只是在創建Integer對象的時候不同

  Integer i = new Integer();

  Integer i = new Integer();

  Integer i = new Integer();

  Integer i = new Integer();

  此時輸出的結果是    i != i   i != i

  這 裡再指明的一點是關於equals方法的這個方法用在這裡就可以避免Integer類的這種特殊處理將以上代碼中的if語句的改一下

  if(i == i) 可以改成 if( iequals(i) ) 就可以了

  補 充的是equals()的原型是

  public boolean equals(Object obj)

  {

  return (this == obj);

  }

  那 這個if(i == i) 和 if( iequals(i) )不是異曲同工了嗎?

  不是的Integer中已經對這個方法作了重載

  public boolean equals(Object obj) {

  if (obj instanceof Integer) {

  return value == ((Integer)obj)intValue();

  }

  return false;

  }


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26714.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.