ByteBuffer的心得

本文主要介绍了Java NIO中的ByteBuffer,它是NIO的核心组件,用于数据的读写。讲解了ByteBuffer的属性,如mark、position和limit,以及如何创建、读写、回绕和清除缓冲区。还详细阐述了如何从SocketChannel读取和写入数据,以及ByteBuffer与字符串之间的转换。
摘要由CSDN通过智能技术生成

1、概述:

在NIO中,数据的读写始终是与缓冲区联系的(读取时信道(ScoketChannel)将数据读入到缓冲区中,写入的时候首先将需要发送的数据按照顺序填入到缓冲区)。缓冲区是定长的。基本上它只是一个列表。它的所有元素都是基本数据类型(String并未包含其中,但是String.getBytes就可以了)。

NIO缓冲区的其中形式:ByteBuffer\ShortBuffer\CharBuffer\IntBuffer\FloatBuffer\DoubleBuffer\LongBuffer。ByteBuffer是最常用的缓冲区,它提供了读写其他数据类型的方法,且信道的读写方法只接受ByteBuffer。在ByteBuffer中,有以下3种常见的属性:m:mark,初始值为-1,标记索引地点;p:position,初始值为0,索引下标;l:limit,最好定义成bytebuffer的长度,既允许可读空间长度;c:capacity:缓冲区能容纳的数据元素的最大数量,创建之后无法被改变。

2、用法:

2.1创建ByteBuffer

2.1.1使用allocate()静态方法

创建一个容量为256的ByteBuffer,ByteBuffer bb=ByteBuffer.allocate(256);,参数为ByteBuffer的长度,这个长度必须要在设计的时充分考虑,不然就得重新创建;

2.1.2通过包装一个已有的数组来创建,通过包装的方法创建的缓冲区保留了被包装数组内保存的数据

ByteBuffer bb=ByteBuffer.wrap(byteArray);//wrap(int[] array,i

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值