java.nio.Buffer的一些基础知识的备忘

开发 后端
缓冲区分为直接缓冲区和间接缓冲区,直接缓冲区的创建成本要高于间接缓冲区,但同时它也会提供更快的I/O访问速度。所以直接缓冲区适合那种长期存在的缓冲区,而间接缓冲区则适合于生命周期较短的。还有,要注意,只有ByteBuffer可以创建直接缓冲区。

capacity(): 表明缓冲区的容量大小, 一旦确定了大小, 将不能再改变;
limit(): 告诉您到目前为止已经往缓冲区填了多少字节,或者用#limit(int)来改变这个限制;
position(): 告诉您当前的位置,以执行下一个读/写操作;
mark(): 为了稍后用 reset() 进行重新设置而记住某个位置;
flip(): 交换限制指针和位置指针,然后将位置置为 0,并废弃已经做的mark标记。

缓冲区的基本操作是读#get()和写#put()。

缓冲区类型:

NIO具有7种特定的 Buffer 类型,每种类型对应着一个基本数据类型(除了 boolean)

  1. ByteBuffer //字节缓冲区 
  2. CharBuffer //字符缓冲区 
  3. DoubleBuffer //double 缓冲区 
  4. FloatBuffer //float 缓冲区 
  5. IntBuffer //int 缓冲区 
  6. LongBuffer //long 缓冲区 
  7. ShortBuffer //short 缓冲区 

缓冲区分为直接缓冲区和间接缓冲区,直接缓冲区的创建成本要高于间接缓冲区,但同时它也会提供更快的I/O访问速度。所以直接缓冲区适合那种长期存在的缓冲区,而间接缓冲区则适合于生命周期较短的。还有,要注意,只有ByteBuffer可以创建直接缓冲区。

缓冲区的几个内部状态的改变:

容量(capacity),缓冲区大小

限制(limit),***个不应被读取或写入的字节的索引,总是小于容量。

位置(position),下一个被读取或写入的字节的索引,总是小于限制。

0 <= position <= limit <= capacity

1. clear()方法:设置limit为capacity,position为0,并丢弃mark。

2. filp()方法:设置limit为当前position,然后设置position为0,并丢弃mark。

3. rewind()方法:保持limit不变,设置position为0,并丢弃mark。

原文链接:http://zddava.iteye.com/blog/315826

【编辑推荐】

  1.  Java NIO(异步IO)Socket通信例子
  2. 影响Java NIO框架性能的因数
  3. Java与Cobol对决:Cobol软件质量最过硬
  4. 甲骨文Java专利遭拒 起诉Android侵权受挫
  5. Java企业应用问题代码最多
责任编辑:林师授 来源: zddava的博客
相关推荐

2009-08-14 17:49:02

ASP.NET MVC

2009-07-02 13:58:29

JSP和J2EE

2011-12-14 16:43:54

javanio

2020-04-18 11:15:38

云计算数据安全

2011-07-21 17:33:27

JAVA

2023-04-27 15:19:52

2023-10-25 13:37:04

Git

2023-07-04 07:31:06

MapReduce数据处理编程模型

2010-04-21 18:38:36

Unix网络

2021-11-05 15:31:01

UbuntuLinux

2021-09-12 07:33:23

python管理编程

2021-12-20 10:55:05

Git命令Linux

2009-07-30 18:49:31

C#时间类型

2011-06-01 16:50:21

JAVA

2011-11-04 17:26:12

2013-03-27 15:56:05

Android开发Andriod绘图

2010-03-17 11:05:16

Linux 硬件管理

2021-08-18 16:09:39

NestJS

2009-07-09 17:46:44

Java流程控制

2011-07-22 09:43:37

java
点赞
收藏

51CTO技术栈公众号