回答
Long
是Object
形式的long
,和Integer
是int
對象形式。
該long
使用64 bits。 int
使用32位,因此只能容納高達±20億的數字(-2 到+2 -1)。
您應該使用long
和int
,除非你需要使用從Object
繼承的方法,如hashcode
。 Java.util.collections
方法通常使用盒裝(Object
包裝)版本,因爲它們需要爲任何Object
工作,並且原始類型(如int
或long
)不是Object
。
另一個區別是,long
和int
是通按值,而Long
和Integer
是通按引用值,像所有的非原始Java類型。因此,如果可以修改Long
或Integer
(不是,它們在不使用JNI代碼的情況下是不可變的),那麼將會有另一個原因使用另一個。
最後的區別是Long
或Integer
可能是null
。
有幾件事情你不能與基本類型做:
- 對他們有
null
值 - 同步
- 使用它們類型參數泛型類,和涉及到的是:
- 它們傳遞到與
Object
小號
聯合國服務的API減少你需要的那些,你應該更喜歡原始類型,因爲它們需要更少的內存。
- 默認情況下在使用數字時使用
int
。 - 如果
int
的範圍太小,使用long
- 如果
long
的範圍太小,使用BigInteger
- 如果將它們放入
Collection
時需要處理的數字作爲對象(例如,處理null
,...)使用Integer
/Long
代替
int
是32位整數;一個long
是一個64位整數。使用哪一個取決於您希望使用的數字的大小。
int
和long
是原始類型,而Integer
和Long
是對象。原始類型更高效,但有時您需要使用對象;例如,Java的集合類只能與對象一起工作,所以如果需要整數列表,則必須使其成爲List<Integer>
(例如,您不能直接在List
中使用int
)。
當涉及到使用可能超過32位來表示的很長的數字時,您可以使用long來確保您不會有奇怪的行爲。
從Java 5開始,您可以使用in-boxing和out-boxing特性使int和Integer的使用完全相同。這意味着你可以這樣做:
int myInt = new Integer(11);
Integer myInt2 = myInt;
的進出拳擊讓你int和整數之間無需任何額外的轉換(同爲Long
,Double
Short
太)切換
您可以使用int
所有的時間,但Integer
包含一些幫助器的方法,可以幫助你做一些複雜的操作整數(如Integer.parseInt(String)
)
- 1. long double vs long int
- 2. long unsigned int和unsigned long int有什麼區別int
- 3. long long int和long double的區別是什麼?
- 4. 什麼時候使用EntityManager.find()vs EntityManager.getReference()
- 5. 爲什麼在使用Long而不是Integer時會出現ClassCastException?
- 6. 什麼時候應該使用hstack/vstack vs append vs concatenate vs column_stack
- 7. 'intmax_t`應該在64位的`long int`和`long long int`平臺上做什麼?
- 8. 主鍵類型:int vs long
- 9. 爲什麼用int提高性能取代long long?
- 10. 什麼時候使用node.js vs sinatra vs rails?
- 11. 我什麼時候使用** kwargs vs kwargs(* args vs args)?
- 12. 什麼時候應該使用CryptoAPI vs System.Security.Cryptography vs Bouncycastle?
- 13. 什麼時候使用__proto__和什麼時候使用原型
- 14. 什麼時候使用Ruby和什麼時候使用PHP
- 15. unsigned long和unsigned long long有什麼區別?
- 16. 爲什麼不是common_type <long,unsigned long> :: type = long long?
- 17. long integer literals
- 18. intn_t什麼時候使用它,什麼時候不使用
- 19. 什麼是Java類型long long
- 20. try..catch VS long if()
- 21. 本地vs全球臨時表 - 什麼時候使用?
- 22. 什麼時候應該使用學說ORM和什麼時候zend-db-table?
- 23. C# - 相同的計算更慢使用Int vs Long?
- 24. 什麼時候應該使用AWS,什麼時候不使用
- 25. unsigned long long int
- 26. IL泛型 - 什麼時候存在什麼規則!T被使用vs!0?
- 27. 什麼時候應該使用Mockery vs JUnit4Mockery?
- 28. 什麼時候應該在Drupal 7中使用Webform vs Fields API?
- 29. 什麼時候使用Storyboard vs Nib/Xib與從頭編碼?
- 30. 黃瓜:什麼時候使用標籤/鉤子vs背景
謝謝大家... – 2011-05-02 13:51:54