2012-09-26 28 views

回答

1

它們都是參考類型。唯一的區別是ArrayList輸入較弱。存儲在其中的值類型(如int,bool等)被裝箱到object類型中。然後,當您在ArrayList中投射每個項目時,您將它們解開。

因爲所有東西都被裝入對象中,所以可以在ArrayList中存儲不同類型的對象。

通用列表是強類型的,也就是說,它可以存儲相同類型的對象。沒有拳擊,所以效率更高。

拳擊過程分配更多內存來將對象封裝爲弱類型object

如果只在ArrayList中存儲引用類型的對象,則不使用裝箱,而使用稱爲引用轉換的另一種機制。

+0

拳擊只發生在價值類型,你的答案不是很明確。 –

+0

@HenkHolterman好點! – Candide

2

內存使用的唯一區別在於存儲值類型時。 ArrayList將不得不Box(複製)該值。盒裝值將被放置在堆上,至少消耗一個額外的頭部塊(約20個字節)。

但是,只有當您存儲數百萬件物品時,這一點纔會顯着,而不是您一直都在做的事。

+0

數組列表需要裝箱時存儲值類型,這就是爲什麼它消耗更多的內存,不是純粹的引用type.is它? –

+0

ArrayList本身仍然是一個純引用類型。 –