《NIO与Socket编程技术指南》读书笔记
缓冲区
Buffer类的使用
【《NIO与Socket编程技术指南》读书笔记】传统的IO流常常把字节流中的数据放入byte或者char数组中,由于java对array数组操作的api较少,所以需要自己使用原始的处理方式(使用length属性等或者下标)处理数据,比较麻烦。这个问题可以使用Buffer缓冲区解决,Buffer类有多个子类:
文章图片
Buffer子类
使用这些子类表示缓冲区保存多种类型的数据,而不只是byte和char。
要注意的是,Buffer和它的子类都是抽象类,不能直接new出实例,需要将上面7种类型的数组包装(wrap)进缓冲区中,来构建不同数据结构的缓冲区。使用示例如下:
byte[] byteArray = new byte[]{1,2,3,4};
ByteBuffer byteBuffer = ByteBuffer.wrap(byteArray);
wrap方法实现如下:
public static ByteBuffer wrap(byte[] array,
int offset, int length)
{
try {
return new HeapByteBuffer(array, offset, length);
} catch (IllegalArgumentException x) {
throw new IndexOutOfBoundsException();
}
}
上面的HeapByteBuffer就是Buffer类的实现类,所以wrap的过程也是实例化对象的过程。
从ByteBuffer类内部:
文章图片
源码
wrap传入的数组最后保存在了ByteBuffer实例内部,所以Buffer类实际上还是对数组进行封装而已。
包装数据与获得容量
推荐阅读
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 《跨界歌手》:亲情永远比爱情更有泪点
- 诗歌:|诗歌: 《让我们举起世界杯,干了!》
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- 人间词话的智慧
- 《一代诗人》37期,生活,江南j,拨动心潭的一泓秋水
- 广角叙述|广角叙述 展众生群像——试析鲁迅《示众》的展示艺术
- 书评——《小行星》