JAVA高级基础(46)---NIO之Buffer常用方法

本文深入探讨Java NIO中的缓冲区概念,包括ByteBuffer、CharBuffer等各类缓冲区的创建、使用方法及属性操作,如put、get、flip、mark/reset,同时解析了remaining、hasRemaining等判断方法的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见实现

  • ByteBuffer
  • CharBuffer
  • ShortBuffer
  • IntBuffer
  • LongBuffer
  • FloatBuffer
  • DoubleBuffer

缓冲区的使用

  1. 建立缓冲区,  分配容量    ByteBuffer  buf  = ByteBuffer.allocate(capacity);
  2. 装载数据:put();及其重载方法
  3. 改变缓冲区的读写模式:flip();
  4. 获取数据:get();及其重载方法
  5. 标记:mark()/resert();
  6. 判断

remaining()返回当前位置与限制之间的元素数
hasRemaining()判断当前位置与限制之间是否还有元素存在
isReadOnly()判断此缓冲区是否为制度缓冲区
buf.clear();//清空缓冲区 只是将缓冲区的三个属性恢复到初始状态   其中的数据依然存在

package org.lanqiao.nio.buffer;

import java.nio.ByteBuffer;

public class BufferDemo {
	public static void main(String[] args) {
		//开辟缓冲区  分配缓冲区
		ByteBuffer buf = ByteBuffer.allocate(1024);
		//存入数据
		buf.put((byte) 2);//1
		buf.putInt(10);//4
		buf.putDouble(12.2);//8
		buf.putChar('太');//2
		buf.putLong(11L);//8
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		buf.flip();//从写模式切换为读模式
		System.out.println(buf.get());
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		System.out.println(buf.getInt());
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		System.out.println(buf.getDouble());
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		buf.mark();
		System.out.println(buf.getChar());
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		/*buf.reset();
		buf.flip();
		buf.putChar('中');
		buf.flip();
		System.out.println(buf.getChar());*/
		//System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		buf.putChar(15,'原');
		System.out.println(buf.getChar());
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		System.out.println(buf.getInt());
		System.out.println(buf.hasRemaining());
		System.out.println(buf.getChar());
		
		
		
		buf.rewind();
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		
		buf.clear();//清空缓冲区 只是将缓冲区的三个属性恢复到初始状态   其中的数据依然存在
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		System.out.println(buf.get());
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值