据我了解,一个array
由固定数量的元素组成,一个variable length argument
与您传递(相同类型)的参数数量一样多。但是他们是一样的吗?我可以通过一个期望的地方吗?
是的,如果您有一个带有varargs参数的方法,例如:
public void foo(String... names)
您这样称呼它:
foo("x", "y", "z");
然后编译器将其转换为:
foo(new String[] { "x", "y", "z"});
names
参数的类型为String[]
,可以像其他数组变量一样使用。请注意,它 可能 仍然是null
:
String[] nullNames = null;
foo(nullNames);
有关更多信息,请参见varargs的文档。
但这 并不 意味着可变参数与阵列互换-你仍然需要声明接受可变参数的方法。例如,如果您的方法声明为:
public void foo(String[] names)
那么第一种调用它的方法将无法编译。
问题内容: 我正在参加本地社区大学的数据结构和算法课程,很有趣。该课程的教科书是Y. Daniel Liang的 Java编程简介,第10版 。这本书本身很扎实。 在处理中,Liang提到了Java的“可变长度”参数。他写道(第265页): Java将可变长度参数视为数组。您可以将数组或可变数量的参数传递给可变长度参数。当调用带有可变数量参数的方法时,Java创建一个数组并将参数传递给它。 一个例
问题内容: 我想知道如何初始化整数数组,使其大小和值在程序执行过程中发生变化,有什么建议吗? 问题答案: 是的:使用ArrayList。 在Java中,“普通”数组是固定大小的。您必须给它们一个尺寸,并且不能扩展或收缩它们。要更改大小,您必须创建一个新数组并复制所需的数据-这效率低下,给您带来痛苦。 幸运的是,有许多内置类可以实现通用的数据结构以及其他有用的工具。您需要检查Java 6 API的完
子弹长度调整不了 目前只完成一些 但飞船子弹完成了 具体情况请看 https://www.bilibili.com/video/BV1nMYCeAEo3?t=3.6 新情况 https://www.bilibili.com/video/BV1wMe7ewEho?t=10.4 修改了参数还是不行 把子弹长度改成0还是很长
问题内容: 在处理可变长度参数时,我之前没有看到过什么特别的东西 例如,有一个名为prepared statement的方法,带有声明,使得 1。 2. 另一个方法声明 为什么Java不允许使用多个可变长度参数?还有其他方法可以做到吗? PS:这样做的原因是我的要求是为传递的参数生成通用的准备好的语句,因为所有此参数都将通过属性传递 问题答案: 仅允许最后一个参数为可变长度: String …等于
问题内容: 我如何遍历可变长度的Java数组。 我想我会设置一个while循环,但是如何检测到数组末尾。 我想我想要这样的东西[只需要弄清楚如何表示myArray.notEndofArray()] 问题答案: 要么 第二个版本是“ for-each”循环,它适用于数组和Collections。大多数循环可以使用for- each循环完成,因为您可能并不在乎实际的索引。如果您确实关心实际索引,请使用
问题内容: 我对Java 声明的语法有疑问: 由于调用主函数时可以传递可变数量的String,因此这不应该是可变长度参数列表而不是数组吗?为什么使用带有字符串参数列表的此方法的命令行调用甚至可以工作?(除非进行后台处理,该处理使用字符串列表构建一个数组,然后将该数组传递给main方法…?)main声明不应该像这样吗?-- 问题答案: 而实际上是相同的事情:什么你得到一个数组。varargs只是调用