2011-05-02 79 views

回答

148

LongObject形式的long,和Integerint對象形式。

long使用64 bitsint使用32位,因此只能容納高達±20億的數字(-2 到+2 -1)。

您應該使用longint,除非你需要使用從Object繼承的方法,如hashcodeJava.util.collections方法通常使用盒裝(Object包裝)版本,因爲它們需要爲任何Object工作,並且原始類型(如intlong)不是Object

另一個區別是,longint通按值,而LongInteger通按引用值,像所有的非原始Java類型。因此,如果可以修改LongInteger(不是,它們在不使用JNI代碼的情況下是不可變的),那麼將會有另一個原因使用另一個。

最後的區別是LongInteger可能是null

+1

謝謝大家... – 2011-05-02 13:51:54

21

有幾件事情你不能與基本類型做:

  • 對他們有null
  • 同步
  • 使用它們類型參數泛型類,和涉及到的是:
  • 它們傳遞到與Object小號

聯合國服務的API減少你需要的那些,你應該更喜歡原始類型,因爲它們需要更少的內存。

13
  • 默認情況下在使用數字時使用int
  • 如果int的範圍太小,使用long
  • 如果long的範圍太小,使用BigInteger
  • 如果將它們放入Collection時需要處理的數字作爲對象(例如,處理null,...)使用Integer/Long代替
10

int是32位整數;一個long是一個64位整數。使用哪一個取決於您希望使用的數字的大小。

intlong是原始類型,而IntegerLong是對象。原始類型更高效,但有時您需要使用對象;例如,Java的集合類只能與對象一起工作,所以如果需要整數列表,則必須使其成爲List<Integer>(例如,您不能直接在List中使用int)。

2

當涉及到使用可能超過32位來表示的很長的數字時,您可以使用long來確保您不會有奇怪的行爲。

從Java 5開始,您可以使用in-boxing和out-boxing特性使int和Integer的使用完全相同。這意味着你可以這樣做:

int myInt = new Integer(11); 
Integer myInt2 = myInt; 

的進出拳擊讓你int和整數之間無需任何額外的轉換(同爲LongDoubleShort太)切換

您可以使用int所有的時間,但Integer包含一些幫助器的方法,可以幫助你做一些複雜的操作整數(如Integer.parseInt(String)

相關問題