之前看過(guò)相關(guān)的ByteBuffer的使用,但是問(wèn)題是那時(shí)還年輕,所以現(xiàn)在有點(diǎn)老了,因此,忘記了,所以決心看源代碼了解一番----故作此篇文章。
?
查看ByteBuffer的API,看的我是一頭霧水,搞不清什么mark、position、limit、flip、reset幾個(gè)的用法,先看下面的例子:
- ?????String?str?=? "helloWorld" ;??
- ????????ByteBuffer?buff??=?ByteBuffer.wrap(str.getBytes());??
- ????????System.out.println( "position:" +buff.position()+ "\t?limit:" +buff.limit());??
- ???????? //讀取兩個(gè)字節(jié) ??
- ????????buff.get();??
- ????????buff.get();??
- ????????System.out.println( "position:" +?buff.get(buff.position())+ "\t?limit:" +buff.limit());??
- ????????buff.mark();??
- ????????System.out.println( "position:" +buff.position()+ "\t?limit:" +buff.limit());??
- ????????buff.flip();??
- ????????System.out.println( "position:" +buff.position()+ "\t?limit:" +buff.limit());<span?style= "white-space:?pre;" >????</span>??
- <pre?name= "code" ? class = "java" >輸出結(jié)果:??
- position: 0 ??limit: 10 ??
- position: 2 ??limit: 10 ??
- position: 2 ??limit: 10 ??
- position: 0 ??limit: 2 ??
- </pre>??
- ???
m | ? | ? | p | ? | ? | ? | ? | ? | ? | ? | L |
-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ? |
? | H | E | L | L | O | W | O | R | L | D | ? |
? | ? | ? | m、p | ? | ? | ? | ? | ? | ? | ? | L |
-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ? |
? | H | E | L | L | O | W | O | R | L | D | ? |
m | p | ? | L | ? | ? | ? | ? | ? | ? | ? | ? |
-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ? |
? | H | E | L | L | O | W | O | R | L | D | ? |
- System.out.println(( char )buff.get()+ "" +( char )buff.get());??
- //?System.out.println((char)buff.get()+""+(char)buff.get() ??
- ???System.out.println(( char )buff.get()+ "" +( char )buff.get()+ "" +( char )buff.get());??
- 輸出結(jié)果:<pre?name= "code" ? class = "java" >position: 0 ????limit: 10 ??
- Exception?in?thread? "main" ?java.nio.BufferUnderflowException??
- ????at?java.nio.Buffer.nextGetIndex(Buffer.java: 474 )??
- ????at?java.nio.HeapByteBuffer.get(HeapByteBuffer.java: 117 )??
- ????at?com.taobao.moxing.notify.Main.main(Main.java: 33 )position: 2 ????limit: 10 ??
- position: 2 ???limit: 10 ??
- position: 0 ???limit: 2 ??
- </pre>??
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
