2017-05-04 154 views
-1

緩衝區是具有諸如ByteBuffer,IntBuffer等具體子類的抽象類。它似乎是特定基本類型數據的容器。緩衝區有什麼好處?爲什麼我不使用數組或列表?Java中的Buffer的用途是什麼?

+1

閱讀文檔應該突出顯示差異來回答這個問題。例如,請參閱http://stackoverflow.com/q/4841340/438992 –

+0

我看到了這些方法的作用。我想知道緩衝區的目的通常是什麼。爲了清楚起見,我的問題的替代版本可能是「緩衝區的名稱是什麼意思?」。 –

+0

我想我假設它的目的是暗示它的能力≈\ _(ツ)_ /¯ –

回答

2

緩衝區可以以其最簡單的形式定義爲某種類型的連續內存塊。因此,4K大小的字節緩衝區(4096字節)可能會佔用內存位置0xf0000xffff(含)。

至於爲什麼可以使用緩衝區類型而不是數組或列表,那麼這兩個選項都不具有limit,positionmark的內置功能。

在第一項,緩衝從,所述limit分離capacity可以有1000 capacity與10。換句話說電流limit,它強制爲具有可變大小高達和能力包括capacity

對於其他兩個特徵,電流position提供了一個內置的方式讀取或寫入的下一個元素,緩和順序處理,而mark提供一種方式來保存當前position供以後復位。

所有這些功能需要額外變量,如果你需要它們與數組或列表結合使用。

當然,如果你不需要需要任何這些功能,然後,通過任何方式,使用一個數組。

+0

名稱緩衝區暗示什麼? –

+0

@CowPowPow,緩衝區只是一個連續的內存塊。例如,存儲器位置17上的10字節緩衝區佔據從17到26(含)的字節地址。我會將其添加到答案中。 – paxdiablo