即使我們有一個整數對象作爲整數,爲什麼有整數(int)的原始類型? 但是與String類型不一樣。 String沒有這種基本類型。總是String處理對象引用?整型爲原始類型
Q
整型爲原始類型
8
A
回答
18
速度。機器代碼使用本機CPU指令添加兩個int的速度要快得多,而不必採用兩個Integer對象,從中提取int值,然後添加它們,從而創建一個新的結果Integer對象以包含結果。 (how JNI maps primitives)
字符串很複雜,有很多方法,因此沒有機器代碼對位。他們被提升爲一個真正的對象。此外,一個String與其他字符串共享狀態使用相同的值創建。沒有原始值與這樣的其他原始值共享狀態。 (immutable can be shared | primitive no sharing)
0
一個字符串數據類型比int要複雜得多 - 有一個可變數量的內存來容納一個字符串。
1
這是因爲處理器(CPU)直接支持整數類型,但不支持字符串。由於性能方面的原因,Java支持一些可能由JVM可能運行的處理器支持的本機類型。
0
最終計算是在機器級語言完成的。我想知道是什麼在性能方面造成了基元和對象之間的差異。詳細的答案將不勝感激。
+0
這應該是一個評論 - 不是'答案'請在這裏競爭SO遊覽:http://stackoverflow.com/tour – 2015-05-11 05:15:06
相關問題
- 1. typedef - 原始類型到原始類型
- 2. 原型中原始類型的行爲
- 3. 與原始類型
- 4. Bash原始類型
- 5. 將原始類型應用到原始類型
- 6. SSE數據類型和原始類型
- 7. 在整型類型的MAX_INT上,Java整數類型原始類型是否「封頂」?
- 8. 鑄造從int(原始類型)陣列到整型(對象類型)陣列
- 9. 將原始類型轉換爲int
- 10. 集合成爲一個原始類型
- 11. 將BitSet設置爲原始類型?
- 12. 原始數據類型爲空
- 13. Boost.Any獲得原始類型
- 14. 比較原始類型
- 15. Objective-C setValue:forKey原始類型
- 16. OCMockito捕獲原始類型?
- 17. Hashtable的原始類型
- 18. MyBatis - 原始類型列表
- 19. 對原始類型雙「
- 20. 沒有類型原始
- 21. 建模DateTime原始類型
- 22. 原始類型雙錯誤
- 23. 對象或原始類型
- 24. Jaxb2Marshaller和原始類型
- 25. NHibernate - Lazy-Loading原始類型
- 26. 原始類型和泛型 - Java的
- 27. Java泛型和原始類型
- 28. Java的泛型和原始類型
- 29. 關於mybatis的參數類型爲原始數據類型?
- 30. 創建類型作爲原始類型的包裝器
我也會增加空間。將整數存儲到內存的空間較小,而不是整個對象的所有操作。 – Alex 2010-01-20 05:11:45