我們在java中有類似Interger,Float的包裝類。爲什麼它仍然是支持原始碼,它正在阻止Java成爲完全面向對象的語言?當我們有包裝類時,爲什麼支持基元?
5
A
回答
6
作爲對象的包裝器被放置在堆中。基元只是「價值」並進入堆棧。這樣更有效率,因爲對於堆中的包裝原語,您至少需要對堆棧對象的引用(堆棧中的值)和。
這種表現是否收穫取決於你在做什麼。對於大量的數字工作,當然,但對於99%的東西,這是一個煩惱。首先,無論如何,你都不能將原語存儲在Collection中。他們會自動複製。因此,存儲大量數據的唯一方法是使用普通數組,這又會導致其他類型的低效率(例如,如果需要調整它們的大小)。
3
由於基元在存儲器和CPU處理方面更輕,效率更高。
+0
我們在使用移動/手持設備時必須考慮這一點。 – 2010-01-14 11:11:46
+0
但是請注意在特定情況下它是否有10%或0.00001%的效果。只在重要時才進行優化。 – 2010-01-14 11:35:52
2
一個字:性能。例如,包裝類型也是不可變的,例如,如果想要使用一個循環計數器,則它會更昂貴。
JVM還具有用於直接對基元進行運算的操作碼。
相關問題
- 1. 爲什麼Java中有包裝類?
- 2. 爲什麼我們需要裝飾器中的包裝函數?
- 3. 爲什麼我們需要將Object類作爲所有類的基類?
- 4. 我們什麼時候需要添加對arm64-v8a的支持?
- 5. 當我繼承基類時,爲什麼會出現'AttributeError'?
- 6. 我的包裝類不「持有」任何
- 7. 當我們有內核時,爲什麼我們需要驅動程序?
- 8. 當我們已經有向量時,爲什麼我們需要同步ArrayList?
- 9. 當我們已經有mapDispatchToProps時,爲什麼我們需要使用redux-thunk
- 10. 當我們已經有一階邏輯時,爲什麼我們需要PDDL?
- 11. 當我們激活它時,爲什麼Word沒有出現?
- 12. 當我有本地的主人時,爲什麼分支?
- 13. 裝配需要什麼?爲什麼我們使用它們?
- 14. 爲什麼人們不會在通用類中包裝DependencyProperties?
- 15. 什麼時候將Structuremap.MVC5 nuget包更新爲支持Structuremap 4.x?
- 16. 爲什麼當應用程序崩潰時,Firebase不支持onDisconnect?
- 17. 爲什麼view pager類不在android.app包中,我不想用支持庫
- 18. 爲什麼我們需要蟒蛇包裝(例如雞蛋)?
- 19. 軟件包安裝--binstubs爲我們提供什麼服務?
- 20. 爲什麼我們有抽象類時需要接口?
- 21. 爲什麼我們有類圖時需要使用ERD?
- 22. 爲什麼我們有類時需要id屬性?
- 23. 爲什麼我得到「活動模式不支持元素」?
- 24. 基元類和基元數據類型有什麼區別?
- 25. 爲什麼我們有這麼多種裝配加載方法?
- 26. 爲什麼在eclipse pdt中沒有單元測試支持?
- 27. Java:爲什麼需要包裝類?
- 28. 爲什麼JAX-WS需要包裝類?
- 29. 安裝包不支持.NetStandard
- 30. 爲什麼git設置我們(沒有分支)?
是否有其他任何存儲的原因? – GuruKulki 2010-01-14 11:06:47
我不是100%確定內部工作是如何工作的,但我相信要計算任何與數字有關的東西,機器必須首先從包裝中提取值(取消裝箱),這至少需要一些工作。但是,JIT運行時優化可能在這裏扮演着詭計,因此即使在數值密集型程序中,實踐中的差異也可能是微不足道的。這應該測量,以確保。 – 2010-01-14 11:10:43