购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3.14 获得偏移量

final int arrayOffset()方法的作用:返回此缓冲区的底层实现数组中第一个缓冲区元素的偏移量,这个值在文档中标注为“可选操作”,也就是子类可以不处理这个值。该方法的内部源代码如下:

public final int arrayOffset() {
    if (hb == null)
        throw new UnsupportedOperationException();
    if (isReadOnly)
        throw new ReadOnlyBufferException();
    return offset;
}

实例变量offset是在执行HeapByteBuffer类的构造方法时传入的,示例代码如下:

HeapByteBuffer(byte[] buf, int off, int len) {
    super(-1, off, off + len, buf.length, buf, 0);
}

最后一个参数0就是对ByteBuffer类的offset实例变量进行赋值,源代码如下:

ByteBuffer(int mark, int pos, int lim, int cap,   // 包级访问
             byte[] hb, int offset)
{
    super(mark, pos, lim, cap);
    this.hb = hb;
    this.offset = offset;
}

示例代码如下:

public class Test15 {
public static void main(String[] args) {
    byte[] byteArray = new byte[] { 1, 2, 3 };
    ByteBuffer bytebuffer = ByteBuffer.wrap(byteArray);
    System.out.println("bytebuffer.arrayOffset=" + bytebuffer.arrayOffset());
}
}

程序运行结果如下:

bytebuffer.arrayOffset=0

在上面的示例中,不管怎么进行操作,arrayOffset()方法的返回值永远是0,非0的情况将在后面的章节介绍。 a40f3rqX3Nanl3Ty/A7fBNEA7RH2/2eDpmPtmIF/To1ChsZ4NOU2UAbOah75Hhi7

点击中间区域
呼出菜单
上一章
目录
下一章
×