更新時(shí)間:2023-02-14 來源:黑馬程序員 瀏覽量:
從結(jié)構(gòu)上來說,Buffer類似于一個(gè)數(shù)組,它可以保存多個(gè)類型相同的數(shù)據(jù)。從類型上來說,Buffer 是一個(gè)抽象類,其子類有 ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer 和 ShortBuffer,這些子類中最常用的是 ByteBuffer 和CharBuffer,其他則使用較少。
Buffer類的子類中并沒有提供構(gòu)造方法,因此不能通過構(gòu)造方法來創(chuàng)建對(duì)象。要想創(chuàng)建Buffer 對(duì)象,通常會(huì)通過子類中的 static XxxBuffer
allocate(int capacity)方法來實(shí)現(xiàn),其中Xxx表示不同的數(shù)據(jù)類型,而 capacity
表示容量,此方法的含義是創(chuàng)建一個(gè)容量為capacity的XxxBuffer對(duì)象。例如創(chuàng)建一個(gè)容量為6的CharBuffer對(duì)象的語句如下:
CharBuffer buffer =CharBuffer,allocate(6);
在學(xué)習(xí) Buffer的使用之前,需要對(duì) Buffer中的三個(gè)重要概念有所理解,這三個(gè)概念分別是 capacity(容量) limit(界限)和position(位置),其含義如下。Ocapacity(容量):緩沖區(qū)的容量表示該Buffer的最大數(shù)據(jù)容量,即最多可以存儲(chǔ)多少數(shù)據(jù)。緩沖區(qū)的容量值不能為負(fù)數(shù),也不能夠改變。
limit(界限):表示Buffer 容器中不可被讀取的區(qū)域的第一個(gè)索引,即位于Buffer容器中索引為0到limit之間的區(qū)域都可以進(jìn)行讀取操作。緩沖區(qū)的 limit 值從不為負(fù),也從不大于其容量。
position(位置):用于指定下一個(gè)可以被讀寫的緩沖區(qū)位置索引。新創(chuàng)建的
Buffe對(duì)象,position的默認(rèn)值為0,每進(jìn)行一次讀取或?qū)懭瞬僮鱬osition的值都會(huì)自動(dòng)向后移動(dòng)一步。如果向 Buffer
緩沖區(qū)中執(zhí)行8次寫人操作,那么position的值為8,即指向 Buffer中的第9個(gè)元素的索引位置。在 Buffer類中,定義了很多方法,其常見方法如表所示:
除上表中的方法外,Buffer 的所有子類中都額外提供了 put()和 get()方法用于向hffer 中放人數(shù)據(jù)和取出數(shù)據(jù)。在使用 put()和 get()方法放入和取出數(shù)據(jù)時(shí),Buffer 既支持單個(gè)數(shù)據(jù)的訪問,也支持批量數(shù)據(jù)的訪問。