我可以使用容量来查找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
}
}
当然,如果仅使用所需容量初始化缓冲区,那将是相同的。但是您确实需要了解两者之间的区别。如果您认为缓冲区是一张空的横线纸,那么容量就是该纸上总共有多少行,而该位置将有效地显示要写入的下一个空白行的位置。