我可以使用容量来查找ShortBuffer的实际大小或长度吗?根据我的阅读,它返回缓冲区中包含的元素数量.但是"容量"这个词是如此含糊不清.如果我在这个缓冲区中放入一个5个短路的数组,容量总是会返回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)
当然,如果您只使用所需的容量初始化缓冲区,那将是相同的.但你确实需要了解两者之间的区别.如果您认为缓冲区是一张空白的衬纸,则容量是纸张上总共有多少行,而该位置将有效地显示下一个要写入的空白行的位置.