java nio buffer

来源:互联网 发布:木子软件 官网 编辑:程序博客网 时间:2024/05/14 22:06

概念上,缓冲区是包在一个对象内的基本数据元素数组。Buffer类相比一个简单数组的优点是它将关于数据的
数据内容和信息包含在一个单一的对象中。Buffer类以及它专有的子类定义了一个用于处理数据缓冲区的API。

(1)属性:所有的缓冲区都具有四个属性来提供关于其所包含的数据元素的信息。它们是

  • 容量(Capacity):缓冲区能够容纳的数据元素的最大数量,这一容量在缓冲区被创建时指定,并且永远不能改变。

  • 上界(Limit):缓冲的第一个不能被读或写的元素。或者说,缓冲中现存元素的计数。

  • 位置(Position):下一个要被读或者写的元素的索引。位置会由相应的get()和put()函数更新。

  • 标记(Mark):一个备忘位置。调用mark()来设定mark = position。调用reset()设定position = mark,标记在设定前是未定(undefined)。

此四个属性遵循如下关系:
0 <= mark <= position <= limit <= capacity

(2)缓冲区的比较

  • equals比较,相等的充要条件是:

    • 两个对象类型要相同。包含不同数据类型的buffer永远不会相等,而且buffer绝不会等于非buffer对象。
    • 两个对象都剩余相同数量的元素。不需要容量相同,而且缓冲区中剩余数据的索引也不必相同,但每个缓冲区中剩余元素的数目(从位置到上界)必须相同。
    • 在每个缓冲区中应被get()函数返回剩余数据元素的序列必须一致。
  • coompareTo函数比较,以词典顺序进行比较,大于返回正整数,小于返回负整数,等于返回0,比果比较对象非buffer则抛出ClassCastException异常。

缓冲区的比较是对于同对象同数据类型间的剩余数据进行比较的。

原创粉丝点击