编程语言您现在的位置是:首页 > 博客日志 > 编程语言

ByteBuffer 使用总结

<a href='mailto:'>微wx笑</a>的头像微wx笑 2022-01-26编程语言 5 0关键字: java  ByteBuffer  

ByteBuffer 使用总结:1、初始化ByteBuffer writeBuffer = ByteBuffer.allocate(256);position=0,capacity=limit=2562、put 60byteposition=60,其它不变3、get 10byteposition=

ByteBuffer 使用总结:ga1无知


ga1无知


ga1无知


ga1无知

1、初始化ga1无知


ga1无知

ByteBuffer writeBuffer = ByteBuffer.allocate(256);ga1无知


ga1无知

position=0,capacity=limit=256ga1无知


ga1无知


ga1无知


ga1无知

2、put 60bytega1无知


ga1无知

position=60,其它不变ga1无知


ga1无知


ga1无知


ga1无知

3、get 10bytega1无知


ga1无知

position=70,其它不变ga1无知


ga1无知


ga1无知


ga1无知

4、flipga1无知


ga1无知

position=0,limit=70,这里是将之前的position的值赋给了limit,也就是认为之前的操作是写入,而不是读取,虽然我们也执行了读取操作。ga1无知


ga1无知

当连续两次执行 flip,中间不间隔任何操作,就需要执行 clear 了。ga1无知


ga1无知


ga1无知


ga1无知


ga1无知


ga1无知


ga1无知


ga1无知

Exception in thread "main" java.nio.InvalidMarkExceptionga1无知


ga1无知

at java.nio.Buffer.reset(Buffer.java:306)ga1无知


ga1无知

at com.weixiao.network.GatewayInstanceTest.main(GatewayInstanceTest.java:192)ga1无知


ga1无知


ga1无知


ga1无知


ga1无知


ga1无知

总结ga1无知


ga1无知

当 ByteBuffer.remaining()  小于要读取或写入的长度时,再执行读取或写入操作都会产生异常;ga1无知


ga1无知

读取则产生 java.nio.BufferUnderflowException 异常,ga1无知


ga1无知

写入则产生 java.nio.BufferOverflowException 异常。ga1无知


ga1无知

当 ByteBuffer.remaining()  等于 0 时,不能再执行读取或写入操作,需要执行:clear() 操作,否则将产生异常。ga1无知


ga1无知

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/lang/2022-01-26/980.html

很赞哦! () 有话说 ()