Q
對象或原始類型
5
A
回答
8
Boolean
,Integer
,Long
...是對象。您可以在不能使用原始類型的地方使用它們,例如
- 將它們存儲在像
Map
- 集合使用它們作爲模板參數
- 以更一般的方式使用它們分配他們一個
null
值 - (例如
Long
如Number
)
示例:
new ArrayList<Integer>();
Long id = null;
Number num = new Long(3);
4
整數,布爾等的基本原理是允許基本類型在需要引用類型的上下文中使用。經典用例是集合API,它提供集合,列表,映射,隊列等,其中元素類型必須是某種引用類型。
因此我可以這樣寫:
List<Integer> list = new ArrayList<Integer>();
但下面是一個編譯錯誤:
List<int> list = new ArrayList<int>();
注意,該用例的基本包裝類型早都泛型類型和「新「收集API,並回溯到僅有的收集類型是原始(通用)形式的Vector
和Hashtable
及其同類的日子。
4
有時候你真的需要一個可以爲空的值,例如如果你的應用存儲用戶數據,社會安全#可能是未知的。在這種情況下,存儲空值而不是-1是更清潔的。
此外還有一些你不能用原始類型做的事情,比如將它們存儲在映射中或使用多態性(Double和Integer都是Number的實例)。
1
基元總是更快。
但是有次,當對象真的有用時:
1.向上轉換。您的函數可以將Number(對於所有數值對象爲整數,浮點數等)作爲參數。
2.可能的空值。例如,它在數據庫中存儲時使用。對象可以爲null,基元必須有價值。所以如果db中的字段爲空,最好使用原始值的對象版本。
3.如果函數帶有對象,並且您總是給它一個原型,那麼在自動裝箱(將原始對象轉換爲對象)上會有開銷。從函數返回一樣。
4.對象有一些特定的方法,比如getHashcode(),toString()等等,在某些情況下它確實有用。
相關問題
- 1. 投擲對象返回原始類型
- 2. typedef - 原始類型到原始類型
- 3. 檢查反射如果類型是原始的或類型是對象
- 4. 對原始類型雙「
- 5. 參數對象的類型[類型]不是原始的
- 6. 總是使用原始對象包裝器替代原始類型的JPA @Id?
- 7. 初始化對象類型
- 8. 鑄造從int(原始類型)陣列到整型(對象類型)陣列
- 9. 與原始類型
- 10. Bash原始類型
- 11. Js原型簡單類型和對象
- 12. 原型對象
- 13. 對原型類使用對象文字
- 14. 整型爲原始類型
- 15. java中的原始類對象
- 16. 從對象轉換爲原始類
- 17. 對原始類型使用屬性
- 18. Java:原始類型對象內的泛型類型或爲什麼我的參數化不起作用
- 19. 將原始類型應用到原始類型
- 20. 原型中原始類型的行爲
- 21. 爲什麼原始類型的數組不被視爲對象
- 22. 使用Java創建原始類型/對象反射
- 23. 返回對象比原始類型有什麼好處?
- 24. 如何從JSON恢復原始對象/類型?
- 25. 原始數據類型Vs的對象在目標C
- 26. XmlSerializer:參數對象的類型不是原始的
- 27. Java反射〜設置原始類型的內部對象值
- 28. 境界JS創建原始數據類型列表對象
- 29. 如何掃描非原始類型的對象?
- 30. 強制轉換原始類型爲可空對象
要添加到答案中,一個實際的例子將存儲變量在會話上下文中的Web應用程序。 – saugata 2010-05-21 06:23:09
不僅Map,所有的容器類都要求它們的元素是Object,因此原始類型不能滿足這個約束。我認爲容器是面向過程語言的面嚮對象語言的一個方面,它爲您帶來很多便利。 :-) – 2010-05-21 06:26:30