通常,在调用紧凑()到ByteBuffer之后,我看到新位置将被设置为旧限制,以便缓冲区为put()做好准备。
但有时,在调用compact()之后,我看到ByteBuffer(和limit = capacity)中的位置为0。如果是这样,只有在调用compact之前position = capacity(或position = limit)时才会发生这种情况吗?
ByteBuffer的javadoc说“缓冲区的位置设置为n + 1,其限制设置为容量。”但我似乎在程序中将位置设置为0。
答案 0 :(得分:1)
如果您已从缓冲区删除了所有内容,则会发生这种情况,因此它与clear().
相同,这意味着预先position = limit
。