我可以使用容量来查找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
    }
}


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

08-18 20:07