Nio Buffer中mark方法的作用解析

package com.roc.nio;

import java.nio.IntBuffer;
import java.security.SecureRandom;

/**
 * 用于对mark属性的测试
 * 调用buffer.remak()时,会将当前的position值赋给remak属性,
 * 保存当前操作的状态,然后get继续执行,当调用buffer.reset()时,会将之前当前的remark值赋予position,
 * 实现状态的恢复.
 * flip clear ( reset mark ) rewind
 * @author lenovo
 *
 */
public class BufferMark {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		IntBuffer intBuffer = IntBuffer.allocate(10);
		for(int i = 0;i<intBuffer.capacity();i++) {
			int b = new SecureRandom().nextInt(20);
			//此方法为相对方法(relative),他会导致position的变化
			intBuffer.put(b);
			//此方法是绝对方法(absolute),他的使用只会讲对应位置的值替换到,并不会更改position
			//intBuffer.put(i,new SecureRandom().nextInt(20));
			
			System.out.print(b+" ");
		}
		//翻转buffer
		intBuffer.flip();
		System.out.println("");
		System.out.println("读取到的数据:"+intBuffer.get());
		System.out.println("读取到的数据:"+intBuffer.get());
		System.out.println("1:buffer position="+intBuffer.position()+"  limit="+intBuffer.limit());
		//标记buffer状态
		intBuffer.mark();
		System.out.println("2: buffer position="+intBuffer.position()+"  limit="+intBuffer.limit());
		System.out.println("读取到的数据:"+intBuffer.get());
		System.out.println("读取到的数据:"+intBuffer.get());
		System.out.println("3: buffer position="+intBuffer.position()+"  limit="+intBuffer.limit());
		//恢复buffer状态
		intBuffer.reset();
		System.out.println("读取到的数据:"+intBuffer.get());
		System.out.println("读取到的数据:"+intBuffer.get());
		System.out.println("4: buffer position="+intBuffer.position()+"  limit="+intBuffer.limit());
		/**
		 *  4 10 3 11 17 5 18 10 2 6 
			读取到的数据:4
			读取到的数据:10
			1: buffer position=2  limit=10
			2: buffer position=2  limit=10
			读取到的数据:3
			读取到的数据:11
			3: buffer position=4  limit=10
			读取到的数据:3
			读取到的数据:11
			4: buffer position=4  limit=10
		 */
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值