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

Java Autoboxing的優缺點

2013-11-23 19:00:44  來源: Java核心技術 

  /**

  *

  * The Advantages and Traps of Autoboxing

  *

  * 優點

  * 代碼更簡潔

  * 自動使用最優的轉換代碼(比如使用IntegervalueOf(int)而不是使用new Integer(int))

  *

  * 缺點:

  * 如果不注意可能會導致錯誤

  * 如果不注意可能會導致效率低下

  * 有時需要強制類型轉換

  *

  * 參考advantagesandtrapsofautoboxing/

  *

  */

  public class M {

  public static void main(String[] args) {

  // 導致錯誤

  Long longValue = L;

  Systemoutprintln(longValueequals(L)); // true

  Systemoutprintln(longValueequals()); // false

  Systemoutprintln(longValue == L); // true

  Systemoutprintln(longValue == ); // true

  long t;

  long t;

  // 導致效率低下

  // 實驗組

  t = SystemcurrentTimeMillis();

  Long counter = L; // Long counter = ; 會報錯!!!

  for (long i = ; i < ; i++) {

  counter++; // 等價於 LongvalueOf(counterlongValue() + )

  }

  t = SystemcurrentTimeMillis();

  Systemoutprintln(time = + (t t)); //

  // 實驗組

  t = SystemcurrentTimeMillis();

  long counter = ;

  for (long i = ; i < ; i++) {

  counter++;

  }

  t = SystemcurrentTimeMillis();

  Systemoutprintln(time = + (t t)); //

  // Integer : + =

  // 需強制類型轉換否則調用printSum(long long)

  // 強制轉換為 int也會調用printSum(long long)

  printSum((Integer) (Integer) );

  // Long : + =

  printSum(L L);

  // 需強制類型轉換

  // Long : + =

  printSum((Long) L (Long) L);

  // Float : + =

  printSum(F F);

  // Double : + =

  printSum(D D);

  }

  public static void printSum(long a long b) {

  Systemoutprintln(Long : + a + + + b + = + (a + b)); // true

  }

  public static void printSum(Long a Long b) {

  Systemoutprintln(Long : + a + + + b + = + (a + b)); // true

  }

  public static void printSum(Integer a Integer b) {

  Systemoutprintln(Integer : + a + + + b + = + (a + b)); // true

  }

  public static void printSum(Float a Float b) {

  Systemoutprintln(Float : + a + + + b + = + (a + b)); // true

  }

  public static void printSum(Double a Double b) {

  Systemoutprintln(Double : + a + + + b + = + (a + b)); // true

  }

  }


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