我们可以在Java中使用可变长度参数来实现动态数组吗?
我的问题是,在java中,我们知道不能创建动态数组,因为在初始化数组索引值之前,我们需要定义数组大小。但我们都知道,java有一个称为可变长度参数的特性,它将创建一个动态数组 最佳示例:公共静态void main(字符串…参数) 因此,使用这个可变长度参数,我们实际上可以为args数组插入任意数量的元素。这是什么矛盾,java的基本规则说您不能,但另一个特性支持这样做 但我们都知道,java有一个称为可变长度参数的特性,它将创建一个动态数组 不,不会的。它将创建一个静态大小的数组,该静态大小由命令行参数的数量定义(在您的示例中)。创建此数组后,无法增加或减少其大小。这实际上与创建一个以编程方式计算的固定数组没有什么不同我们可以在Java中使用可变长度参数来实现动态数组吗?,java,arrays,Java,Arrays,我的问题是,在java中,我们知道不能创建动态数组,因为在初始化数组索引值之前,我们需要定义数组大小。但我们都知道,java有一个称为可变长度参数的特性,它将创建一个动态数组 最佳示例:公共静态void main(字符串…参数) 因此,使用这个可变长度参数,我们实际上可以为args数组插入任意数量的元素。这是什么矛盾,java的基本规则说您不能,但另一个特性支持这样做 但我们都知道,java有一个称为可变长度参数的特性,它将创建一个动态数组 不,不会的。它将创建一个静态大小的数组,该静态大小由命
如果您想要一个动态(即改变大小)数组,那么Java不提供。您需要使用一个列表或另一个集合。对于vararg方法,您可以将它们视为接受数组的方法:
public void f(String... args)
与
public void f(String [] args)
这仅仅是一个语法糖,允许使用varags定义的方法被调用为:
f("a","b","c")
而不是先创建数组
但是如果是这样的话,您应该在创建数组时指定数组的长度(在外部)。这个特定函数f将在运行时接受任何长度的数组,这并不矛盾。不改变的是已创建数组的大小 因此,使用这个可变长度参数,我们实际上可以为args数组插入任意数量的元素 是,
(String…args)
允许您为数组指定任何大小,如下所示:
main(String[] args) //called with (new String[]{"a", "b", "c"})
允许您为args
选择任何大小。通过使用调用main(String…
),您也可以执行相同的操作
main("a", "b", "c")
您没有意识到的是,两个结果数组的大小都不能改变。数组的大小只有在编译时不需要知道的情况下才是动态的,但一旦创建(在运行时),数组的大小就不能更改。取决于您所说的动态。您可以在运行时计算数组的大小,然后创建它并初始化其值。这对我来说似乎很有活力。