Java中Buffer緩沖區(qū)的ByteBuffer類詳解
ByteBuffer類
ByteBuffer類內(nèi)部封裝了一個(gè)byte[]數(shù)組,并可以通過一些方法對(duì)這個(gè)數(shù)組進(jìn)行操作。
創(chuàng)建ByteBuffer對(duì)象的三種方式
//方式一:在堆中創(chuàng)建緩沖區(qū): public static ByteBuffer allocate(intcapacity) // 方式二: 在系統(tǒng)內(nèi)存創(chuàng)建緩沖區(qū): public static ByteBuffer allocatDirect(int capacity) // 方式三:通過數(shù)組創(chuàng)建緩沖區(qū): public static ByteBuffer wrap(byte[] arr)
添加數(shù)據(jù)-put
public ByteBuffer put(byte b); //向當(dāng)前可用位置添加數(shù)據(jù)。 public ByteBuffer put(byte[] byteArray); // 向當(dāng)前可用位置添加一個(gè)byte[]數(shù)組 public ByteBuffer put(byte[] byteArray,int offset,int len); // 添加一個(gè)byte[]數(shù)組的一部分
容量-capacity
Buffer的容量(capacity)是指:Buffer所能夠包含的元素的最大數(shù)量。定義了Buffer后,容量是不可變的
public final int capacity();//獲取緩沖數(shù)組的容量
限制-limit
限制limit是指:第一個(gè)不應(yīng)該讀取或?qū)懭朐氐膇ndex索引。緩沖區(qū)的限制(limit)不能為負(fù),并且不能大于容量。 有兩個(gè)相關(guān)方法:
public int limit()://獲取此緩沖區(qū)的限制。 public Buffer limit(int newLimit)://設(shè)置此緩沖區(qū)的限制
位置-position
位置position是指:當(dāng)前可寫入的索引。位置不能小于0,并且不能大于"限制"。
結(jié)論: 操作緩沖數(shù)組,其實(shí)就是操作position到limit之間位置上的元素 有兩個(gè)相關(guān)方法:
public int position()://獲取當(dāng)前可寫入位置索引。 public Buffer position(int p)://更改當(dāng)前可寫入位置索引。
標(biāo)記-mark
標(biāo)記mark是指:當(dāng)調(diào)用緩沖區(qū)的reset()方法時(shí),會(huì)將緩沖區(qū)的position位置重置為該標(biāo)記的索引。
相關(guān)方法:
public Buffer mark();//設(shè)置此緩沖區(qū)的標(biāo)記為當(dāng)前的position位置。 public Buffer reset();//將此緩沖區(qū)的位置重置為以前標(biāo)記的位置。
其它方法
public Buffer clear();//還原緩沖區(qū)的狀態(tài)。
- 將position設(shè)置為:0
- 將限制limit設(shè)置為容量capacity;
- 丟棄標(biāo)記mark。
public Buffer flip();//縮小limit的范圍。
- 將limit設(shè)置為當(dāng)前position位置;
- 將當(dāng)前position位置設(shè)置為0;
- 丟棄標(biāo)記
到此這篇關(guān)于Java中Buffer緩沖區(qū)的ByteBuffer類詳解的文章就介紹到這了,更多相關(guān)Java的ByteBuffer類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解如何在SpringBoot中優(yōu)雅地重試調(diào)用第三方API
在實(shí)際的應(yīng)用中,我們經(jīng)常需要調(diào)用第三方API來獲取數(shù)據(jù)或執(zhí)行某些操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12JavaWeb之Ajax的基本使用與實(shí)戰(zhàn)案例
ajax技術(shù)是使頁面能局部刷新的一種技術(shù),下面這篇文章主要給大家介紹了關(guān)于JavaWeb之Ajax的基本使用與實(shí)戰(zhàn)案例的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08SpringBoot Shiro 權(quán)限注解不起作用的解決方法
本文主要介紹了SpringBoot Shiro 權(quán)限注解不起作用的解決方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07spring如何實(shí)現(xiàn)兩個(gè)xml配置文件間的互調(diào)
這篇文章主要介紹了spring如何實(shí)現(xiàn)兩個(gè)xml配置文件間的互調(diào),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Java線程的生命周期和狀態(tài)控制_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java線程的生命周期和狀態(tài)控制,需要的朋友可以參考下2017-05-05SpringBoot中熱點(diǎn)KEY緩存優(yōu)化的2種主流策略
所謂熱點(diǎn)KEY,是指在緩存或數(shù)據(jù)庫中被頻繁訪問的少量鍵值,這些鍵往往承載了系統(tǒng)中大部分的訪問流量,本文將分享SpringBoot中三種主流的熱點(diǎn)KEY緩存優(yōu)化策略,大家可以根據(jù)需求進(jìn)行選擇2025-04-04Struts2中圖片以base64方式上傳至數(shù)據(jù)庫
這篇文章主要介紹了Struts2中圖片以base64方式上傳至數(shù)據(jù)庫的實(shí)現(xiàn)代碼,代碼分為前臺(tái)和后臺(tái)兩段,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09java.net.UnknownHostException異常的一般原因及解決步驟
關(guān)于java.net.UnknownHostException大家也許都比較熟悉,這篇文章主要給大家介紹了關(guān)于java.net.UnknownHostException異常的一般原因及解決步驟,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02Java中Object類常用的12個(gè)方法(小結(jié))
Java 中的 Object 方法在面試中是一個(gè)非常高頻的點(diǎn),本文主要介紹了Java中Object類常用的12個(gè)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12