Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们可以在Java中使用可变长度参数来实现动态数组吗?_Java_Arrays - Fatal编程技术网

我们可以在Java中使用可变长度参数来实现动态数组吗?

我们可以在Java中使用可变长度参数来实现动态数组吗?,java,arrays,Java,Arrays,我的问题是,在java中,我们知道不能创建动态数组,因为在初始化数组索引值之前,我们需要定义数组大小。但我们都知道,java有一个称为可变长度参数的特性,它将创建一个动态数组 最佳示例:公共静态void main(字符串…参数) 因此,使用这个可变长度参数,我们实际上可以为args数组插入任意数量的元素。这是什么矛盾,java的基本规则说您不能,但另一个特性支持这样做 但我们都知道,java有一个称为可变长度参数的特性,它将创建一个动态数组 不,不会的。它将创建一个静态大小的数组,该静态大小由命

我的问题是,在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")
您没有意识到的是,两个结果数组的大小都不能改变。数组的大小只有在编译时不需要知道的情况下才是动态的,但一旦创建(在运行时),数组的大小就不能更改。

取决于您所说的动态。您可以在运行时计算数组的大小,然后创建它并初始化其值。这对我来说似乎很有活力。