Java NIO 緩衝區Buffer(二)緩衝區的建立

來源:互聯網
上載者:User

標籤:city   三種方式   子類   static   分配   text   有一個   初始設定   1.5   

 Java NIO 緩衝區Buffer(二)緩衝區的建立

建立緩衝區的方式

建立方式存在兩種:

1. allocate方式

2. wrap方式

allocate方式
 CharBuffer charBuffer = CharBuffer.allocate(10);

Buffer下的每一個子類都有allcate方法,以CharBuffer為例,它將隱含的從堆空間中分配一個char型數組作為備份儲存空間來儲存10個char變數。

   public static CharBuffer allocate(int capacity) {        if (capacity < 0)            throw new IllegalArgumentException();        return new HeapCharBuffer(capacity, capacity);    }       HeapCharBuffer(int cap, int lim) {            // package-private             super(-1, 0, lim, cap, new char[cap], 0);        /*        hb = new char[cap];        offset = 0;        */     }
wrap方式

wrap方式更靈活一點,它可以提供自己定義的數組取用作緩衝區備份儲存空間。

1         char[] buffer = new char[10];2         CharBuffer charBuffer = CharBuffer.wrap(buffer);

這種方式也能返回一個CharBuffer對象,不過它的資料元素確是儲存在數組中,我們知道由於數組的特性,如果我們調用put()函數的話數組內的值也會跟著改變,相反,如果我們對數組進行資料變動,那麼緩衝區也一樣會受到影響。

另外wrap還有一個重載的方法,可以提供設定position和limit的值。

CharBuffer charBuffer = CharBuffer.wrap(buffer,2,3);

代碼會建立出一個position是2,limit是5,capacity為10的Buffer。注意這隻是初始設定,後續你也可以改變它。

        HeapCharBuffer(char[] buf, int off, int len) { // package-private             super(-1, off, off + len, buf.length, buf, 0);        /*        hb = buf;        offset = 0;        */         }

 

緩衝區的複製

主要有三種方式:

duplicate方法

asReadOnlyBuffer方法

slice方法

duplicate方法

建立出一個原有緩衝區的拷貝(產生一個新的緩衝區對象),但是兩個都是共用資料元素,修改一個對另一個可見。但是上界,容量,和位置屬性都是特有的。

asReadOnlyBuffer方法

顧名思義,複製的是一個唯讀緩衝區。與duplicate沒什麼區別。不能修改。

 

slice方法

用於分割緩衝區,建立一個從原始緩衝區的當期位置開始的新緩衝區,其容量是原始緩衝區的剩餘元素數量。

Java NIO 緩衝區Buffer(二)緩衝區的建立

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.