java8中NIO緩沖區(qū)(Buffer)的數(shù)據(jù)存儲(chǔ)詳解
java8新特性NIO緩沖區(qū)(Buffer)的數(shù)據(jù)存儲(chǔ)。
ByteBuffer,CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer,
DoubleBuffer.
1、緩沖區(qū)在java nio中負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)。緩沖區(qū)就是數(shù)組。用于存儲(chǔ)不同數(shù)據(jù)類型的數(shù)據(jù)。根據(jù)數(shù)據(jù)類型不同(boolean除外),提供了相應(yīng)類型的緩沖區(qū)。
ByteBuffer,CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer,
DoubleBuffer.
上述緩沖區(qū)的管理方式幾乎一致,通過allocate()獲取緩沖區(qū)。
//分配一個(gè)指定大小的緩沖區(qū)ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
2、緩沖區(qū)中的四個(gè)核心屬性:
capacity:容量,表示緩沖區(qū)中最大存儲(chǔ)數(shù)據(jù)的容量。一旦聲明不能改變。
3、limit:界限,表示緩沖區(qū)中可以操作數(shù)據(jù)的大小。(limit后所得數(shù)據(jù)不能進(jìn)行讀寫)。
4、position:位置,表示緩沖區(qū)中正在操作數(shù)據(jù)的位置。
position<=limit<=capacity
5、ByteBuffer的基本使用。
緩沖區(qū)存取數(shù)據(jù)的兩個(gè)核心方法:
put():存入數(shù)據(jù)到緩沖區(qū)
//分配一個(gè)指定大小的緩沖區(qū) ByteBuffer byteBuffer = ByteBuffer.allocate(1024); System.out.println(byteBuffer.position()); System.out.println(byteBuffer.limit());; System.out.println(byteBuffer.capacity()); //利用put方法存入數(shù)據(jù)到緩沖區(qū)中 String str = "abcde"; byteBuffer.put(str.getBytes());
6、ByteBuffer的基本使用。
緩沖區(qū)存取數(shù)據(jù)的兩個(gè)核心方法:
get():獲取緩沖區(qū)的數(shù)據(jù)
//4、利用get()讀取緩沖區(qū)的數(shù)據(jù) byte[] dst = new byte[byteBuffer.limit()]; byteBuffer.get(dst); System.out.println(new String(dst,0,dst.length));
7、調(diào)用flip()讀數(shù)據(jù)模式之后
//3、切換成讀取數(shù)據(jù)模式byteBuffer.flip();
8、調(diào)用flip()操作之后:
9、rewind()方法:可重復(fù)讀:
byteBuffer.rewind(); System.out.println("----------rewind()-------------"); System.out.println(byteBuffer.position()); System.out.println(byteBuffer.limit());; System.out.println(byteBuffer.capacity());
相關(guān)文章
Redis?+?Java攔截器實(shí)現(xiàn)用戶匿名和非匿名訪問
本文主要介紹了Redis?+?Java攔截器實(shí)現(xiàn)用戶匿名和非匿名訪問,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06java實(shí)現(xiàn)事件委托模式的實(shí)例詳解
這篇文章主要介紹了java實(shí)現(xiàn)事件委托模式的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例來說明如何實(shí)現(xiàn)改功能,希望能幫助到大家理解這樣的模式,需要的朋友可以參考下2017-08-08詳談Map的key、value值的數(shù)據(jù)類型不能為基本類型的原因
這篇文章主要介紹了詳談Map的key、value值的數(shù)據(jù)類型不能為基本類型的原因,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09Java?SpringMVC實(shí)現(xiàn)自定義攔截器
這篇文章主要為大家詳細(xì)介紹了SpringMVC實(shí)現(xiàn)自定義攔截器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03Java連接數(shù)據(jù)庫步驟解析(Oracle、MySQL)
本文主要介紹了Java連接Oracle數(shù)據(jù)庫和MySQL數(shù)據(jù)庫的步驟解析。具有很好的參考價(jià)值,需要的朋友一起來看下吧2016-12-12SpringMVC中Controller層獲取前端請(qǐng)求參數(shù)的方式匯總
這篇文章主要介紹了SpringMVC中Controller層獲取前端請(qǐng)求參數(shù)的幾種方式,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08Java網(wǎng)絡(luò)編程中的TCP/UDP詳解
這篇文章主要介紹了Java網(wǎng)絡(luò)編程中的TCP/UDP詳解,網(wǎng)絡(luò)編程是指編寫運(yùn)行在多個(gè)設(shè)備的程序,這些設(shè)備都通過網(wǎng)絡(luò)連接起來,java.net 包中 J2SE 的 API 包含有類和接口,它們提供低層次的通信細(xì)節(jié),需要的朋友可以參考下2023-12-12