缓冲区-Buffer
一个Buffer对象是固定数量的数据的容器。其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索。
下图是Buffer的类层次图。在顶部是通用Buffer类。Buffe定义所有缓冲区类型共有的操作,无论是它们所包含的数据类型还是可能具有的特定的行为。
缓冲区基础
概念上,缓冲区时报在一个对象内的基本数据元素数组。Buffer类相比一个简单数组的优点是它将关于数据的数据内容和信息包含在一个单一的对象中。Buffer类以及它专有的子类定义了一个用于处理数据缓冲区的API。
缓冲区属性
所有的缓冲区都具有四个属性来提供关于其所包含的数据元素的信息,分别是:
容量(Capacity)
缓冲区能够容纳的数据元素的最大个数。这个容量在缓冲区创建的时候就被指定,并且无法改变。
1 | 官方说明 |
上限(Limit)
缓冲区的第一个不能被读或者写的元素。或者说,缓冲区中现存元素的计数。
1 | 官方说明 |
位置(Position)
下一个即将要被读或者写的元素的位置。位置会自动由响应的get()和put()函数更新。
1 | 官方说明 |
标记(Mark)
一个备忘位置。调用mark()来设定mark = position。调用reset()设定position = mark。标记在设定前是未定义的。一旦被定义,其值用不可能大于当前的position和非负数。
1 | 官方说明 |
这四个属性之间总是遵循下面的关系:
0 <= mark <= postion <= limit <= capacity