方法int position()的作用:返回此缓冲区的位置。
方法Buffer position(int newPosition)的作用:设置此缓冲区新的位置。
什么是位置呢?它代表“下一个”要读取或写入元素的index(索引),缓冲区的position(位置)不能为负,并且position不能大于其limit。如果mark已定义且大于新的position,则丢弃该mark。
position应用示例如图1-15所示。
图1-15 position应用示例
在图1-13中,position对应的index是3,说明从此位置处开始写入或读取,直到limit结束。
下面用代码来验证position是下一个读取或写入操作的index:
public class Test3 { public static void main(String[] args) { char[] charArray = new char[] { 'a', 'b', 'c', 'd' }; CharBuffer charBuffer = CharBuffer.wrap(charArray); System.out.println("A capacity()=" + charBuffer.capacity() + " limit()=" + charBuffer.limit() + " position()=" + charBuffer.position()); charBuffer.position(2); System.out.println("B capacity()=" + charBuffer.capacity() + " limit()=" + charBuffer.limit() + " position()=" + charBuffer.position()); charBuffer.put("z"); for (int i = 0; i < charArray.length; i++) { System.out.print(charArray[i] + " "); } } }
程序运行结果如下:
A capacity()=4 limit()=4 position()=0 B capacity()=4 limit()=4 position()=2 a b z d