2010-01-14 69 views

回答

6

作爲對象的包裝器被放置在堆中。基元只是「價值」並進入堆棧。這樣更有效率,因爲對於堆中的包裝原語,您至少需要對堆棧對象的引用(堆棧中的值)

這種表現是否收穫取決於你在做什麼。對於大量的數字工作,當然,但對於99%的東西,這是一個煩惱。首先,無論如何,你都不能將原語存儲在Collection中。他們會自動複製。因此,存儲大量數據的唯一方法是使用普通數組,這又會導致其他類型的低效率(例如,如果需要調整它們的大小)。

+0

是否有其他任何存儲的原因? – GuruKulki 2010-01-14 11:06:47

+0

我不是100%確定內部工作是如何工作的,但我相信要計算任何與數字有關的東西,機器必須首先從包裝中提取值(取消裝箱),這至少需要一些工作。但是,JIT運行時優化可能在這裏扮演着詭計,因此即使在數值密集型程序中,實踐中的差異也可能是微不足道的。這應該測量,以確保。 – 2010-01-14 11:10:43

3

由於基元在存儲器和CPU處理方面更輕,效率更高。

+0

我們在使用移動/手持設備時必須考慮這一點。 – 2010-01-14 11:11:46

+0

但是請注意在特定情況下它是否有10%或0.00001%的效果。只在重要時才進行優化。 – 2010-01-14 11:35:52

2

一個字:性能。例如,包裝類型也是不可變的,例如,如果想要使用一個循環計數器,則它會更昂貴。

JVM還具有用於直接對基元進行運算的操作碼。

相關問題