2017-05-04 2 views
-1

Puffer ist eine abstrakte Klasse mit konkreten Unterklassen wie ByteBuffer, IntBuffer usw. Es scheint ein Container mit Daten eines bestimmten primitiven Typs zu sein. Was sind die Vorteile eines Puffers? Warum sollte ich nicht einfach ein Array oder eine Liste verwenden?Was ist der Zweck eines Puffers in Java?

+1

Das Lesen der Dokumente sollte diese Frage durch Hervorheben der Unterschiede beantworten. Siehe zum Beispiel http://stackoverflow.com/q/4841340/438992 –

+0

Ich sehe was die Methoden machen. Ich habe mich gefragt, was der Zweck eines Puffers typischerweise ist. Eine alternative Version meiner Frage könnte zur besseren Übersicht lauten: "Was bedeutet der Name 'Puffer'?". –

+0

Ich nehme an, ich hatte angenommen, dass der Zweck durch seine Fähigkeiten impliziert wurde ¯ \ _ (ツ) _/¯ –

Antwort

2

Ein Puffer kann in seiner einfachsten Form als zusammenhängender Speicherblock eines Typs definiert werden. Daher kann ein Bytepuffer der Größe 4K (4096 Bytes) die Speicherstellen 0xf000 bis einschließlich 0xffff belegen.

, warum ein Puffertyp anstelle eines Arrays oder einer Liste verwendet werden können, haben keine dieser beiden Alternativen die eingebauten Funktionen von limit, position oder mark.

auf den ersten Punkt, ein Puffer, um die capacity vom limit, dass trennt Sie eine capacity von 1000 mit einem aktuellen limit von 10. Mit anderen Worten haben kann, erzwingt es die Möglichkeit, eine variable Größe bis haben und einschließlich die capacity.

Für die beiden anderen Funktionen bieten die aktuellen position eine integrierte Art und Weise das nächste Element zu lesen oder zu schreiben, einen sequentielle Verarbeitung erleichtert und die mark bietet eine Möglichkeit, die aktuellen position für später zurückgesetzt zu speichern.

Alle diese Funktionen erfordern zusätzliche Variablen, wenn Sie sie in Verbindung mit einem Array oder einer Liste benötigt.

Natürlich, wenn Sie nicht eines dieser Features verwenden, dann verwenden Sie auf jeden Fall ein Array.

+0

Was bedeutet der Name Puffer? –

+0

@CowPowPow, ein Puffer ist einfach ein zusammenhängender Speicherblock. Zum Beispiel belegt ein Zehn-Byte-Puffer am Speicherplatz 17 die Byte-Adressen von 17 bis einschließlich 26. Ich füge das zur Antwort hinzu. – paxdiablo

Verwandte Themen