java中的新io,Buffer基本操作:

java中的新io,Buffer基本操作:



package InAndOut.NewIO;

import java.nio.CharBuffer;
import java.util.concurrent.SynchronousQueue;

//Buffer可以理解为一个容器,他的本质是一个数组
public class BufferTest {
	public static void main(String[] args) {
		// 创建buffer,CharBuffer,ByteBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer,DoubleBuffer,这些buffer都没有提供构造器,要通过下边方法创建一个对象
		CharBuffer buff = CharBuffer.allocate(8);//创建了一个容量为8的CharBuffer,
		System.out.println("新建的buff的容量为:" + buff.capacity());
		System.out.println("新建的buff的界限limit为" + buff.limit());
		System.out.println("新建的buff的位置position为:" + buff.position());
		// 放入三个元素,放入一个,位置就加1,
		buff.put("a");
		buff.put("b");
		buff.put("c");
		System.out.println("加入3元素后的位置position变化:" + buff.position());
		// flip后,位置归0,界限为元素个数
		//界限:limit:第一个不应该被读出或者写入的缓冲区位置索引。也就是说,位于limit后的数据既不可以被读,也不可以被写
		//位置:position:用于致命下一个可以被读出的或者写入的缓冲区位置索引。
		buff.flip();
		System.out.println("执行flip后的的buff的界限limit是" + buff.limit());
		System.out.println("执行flip后的buff的位置position是:" + buff.position());
		// 取出元素,执行一次get方法就取出一个元素,取出一个,位置就加一
		System.out.println("取出两个元素" + buff.get() + buff.get());
		System.out.println("取出两个元素后的位置position是:" + buff.position());
		// 下边是调用clear方法:注意clear方法不是清空Buffer的数据,只是将position放置为0,将limit设置为capacity,这样为再次向buff中加入数据做好准备
		buff.clear();
		System.out.println("clear后的位置position是:" + buff.position());
		System.out.println("clear后的界限limit是:" + buff.limit());
		System.out.println("clear后的数据:" + buff.get());

	}
}

控制台输出为:

新建的buff的容量为:8
新建的buff的界限limit为8
新建的buff的位置position为:0
加入3元素后的位置position变化:3
执行flip后的的buff的界限limit是3
执行flip后的buff的位置position是:0
取出第一个元素ab
取出两个元素后的位置position是:2
clear后的位置position是:0
clear后的界限limit是:8
clear后的数据:a



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值