ShortBuffer.capacity的大小或长度是否相同

Esp*_*pen 1 java

我可以使用容量来查找ShortBuffer的实际大小或长度吗?根据我的阅读,它返回缓冲区中包含的元素数量.但是"容量"这个词是如此含糊不清.如果我在这个缓冲区中放入一个5个短路的数组,容量总是会返回5吗?

Jon*_*eet 5

不可以.容量是缓冲区目前可以有效保存的数据量.这并不意味着如此多的数据已经被写入.

如果将5个短路阵列放在容量较大的缓冲区中,则不会改变容量,但改变位置.例如:

import java.nio.*;

public class Test {
    public static void main(String[] args) throws Exception {
        ShortBuffer buffer = ShortBuffer.allocate(100);
        short[] data = new short[5];
        buffer.put(data);
        System.out.println(buffer.capacity()); // Prints 100
        System.out.println(buffer.position()); // Prints 5
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,如果您只使用所需的容量初始化缓冲区,那将是相同的.但你确实需要了解两者之间的区别.如果您认为缓冲区是一张空白的衬纸,则容量是纸张上总共有多少行,而该位置将有效地显示下一个要写入的空白行的位置.