Java ShortBuffer.capacity是否与其大小或长度相同
我可以使用容量来查找短缓冲区的实际大小或长度吗?根据我读到的内容,它返回缓冲区中包含的元素数。但“能力”这个词是如此含糊不清。如果我在这个缓冲区中放入一个由5个短路组成的数组,容量是否总是返回5?是。根据Java ShortBuffer.capacity是否与其大小或长度相同,java,Java,我可以使用容量来查找短缓冲区的实际大小或长度吗?根据我读到的内容,它返回缓冲区中包含的元素数。但“能力”这个词是如此含糊不清。如果我在这个缓冲区中放入一个由5个短路组成的数组,容量是否总是返回5?是。根据Buffer(它是ShortBuffer的超类): “缓冲区的容量是它包含的元素数。”是。根据Buffer(它是ShortBuffer的超类): “缓冲区的容量是它包含的元素数。”是,容量返回缓冲区中元素的最大数量。如果您以5的容量初始化它,它的容量将始终为5。当然,这并不意味着它必须包含5个元
Buffer
(它是ShortBuffer
的超类):
“缓冲区的容量是它包含的元素数。”是。根据
Buffer
(它是ShortBuffer
的超类):
“缓冲区的容量是它包含的元素数。”是,容量返回缓冲区中元素的最大数量。如果您以5的容量初始化它,它的容量将始终为5。当然,这并不意味着它必须包含5个元素。是的,容量返回缓冲区中元素的最大数量。如果您以5的容量初始化它,它的容量将始终为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
}
}
当然,如果只使用所需的容量初始化缓冲区,则情况将是相同的。但是你需要理解两者之间的区别。如果您设想缓冲区是一张空行纸,则容量是指纸张上总共有多少行可用,而该位置将有效地显示下一个要写入的空行的位置。否。容量是指缓冲区当前可以有效保存的数据量。这并不意味着写了那么多数据 如果你在一个容量更大的缓冲区中放置一个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
}
}
当然,如果只使用所需的容量初始化缓冲区,则情况将是相同的。但是你需要理解两者之间的区别。如果您设想缓冲区是一张空行纸,那么容量就是纸上总共有多少行可用,而位置将有效地显示下一个要写入的空行的位置
如果我在这个缓冲区中放置一个5个短路的数组,容量是否总是返回5
我认为真正的答案是否定的。缓冲区的容量取决于分配缓冲区时提供的参数,而不是放入缓冲区的元素数量
缓冲区javadoc说:
缓冲区是一个线性有限序列
特定原语的元素
类型。除了内容之外
缓冲区的基本属性是
其容量、限制和位置:
- 缓冲区的容量是它包含的元素数。容量 缓冲区的大小永远不会是负数和负数 永不改变
- 缓冲区的限制是第一个不应包含的元素的索引 读或写。缓冲区的限制是 永不消极,永不伟大 而不是它的能力
- 缓冲区的位置是要读取或删除的下一个元素的索引 书面的缓冲器的位置永远不会改变 消极的,永远不会大于它的 限制
容量
)与当前包含的元素数量之间存在区别;通常在读取时(限制-位置)
,或在写入时位置
javadocs中的和方法加强了这一点。前者表示参数给出了缓冲区容量,而后者不表示put
将更新缓冲区容量
(另一方面,您可以争辩说,缓冲区在任何时候都“包含”容量元素,但其中一些元素不是“有效”数据。)
如果我在这个缓冲区中放置一个5个短路的数组,容量是否总是返回5
我认为真正的答案是否定的。缓冲区的容量取决于分配缓冲区时提供的参数,而不是放入缓冲区的元素数量
缓冲区javadoc说:
缓冲区是一个线性有限序列
特定原语的元素
类型。除了内容之外
缓冲区的基本属性是
其容量、限制和位置:
- 缓冲区的容量是它包含的元素数。容量 缓冲区的大小永远不会是负数和负数 永不改变
- 缓冲区的限制是第一个不应包含的元素的索引 读或写。缓冲区的限制是 永不消极,永不伟大 而不是它的能力
- 缓冲区的位置是要读取或删除的下一个元素的索引 书面的缓冲器的位置永远不会改变 消极的,永远不会大于它的 限制
容量
)与当前包含的元素数量之间存在区别;通常在读取时(限制-位置)
,或在写入时位置
javadocs中的和方法加强了这一点。前者表示参数给出了缓冲区容量,而后者不表示put
将更新缓冲区容量
(另一方面,您可以争辩说,缓冲区在任何时候都“包含”容量元素,但其中一些元素不是“有效”数据。)Thanx!所以要澄清。如果我精确地分配我所需要的,然后将其用作只读缓冲区,那么容量将