繁体   English   中英

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

[英]Can we achieve a dynamic array by using variable length arguments in Java?

我的问题是在 Java 中我们知道我们不能创建动态数组,因为在我们需要定义数组大小之前,我们要初始化数组索引的值。 但是我们都知道java有一个特性叫做变长参数,它会创建一个动态数组。

最好的例子:public static void main (String... args)所以使用这个可变长度参数,我们实际上可以为 args 数组插入任意数量的元素。 这个矛盾是什么,java的基本规则说你不能,但另一个特性可以这样做。

但是我们都知道java有一个特性叫做变长参数,它会创建一个动态数组。

不,不会。 它将创建一个静态大小的数组,并且该静态大小(在您的示例中)由命令行参数的数量定义。 创建后,无法增加或减少此数组的大小。 这实际上与创建一个您以编程方式计算的大小的固定数组没有什么不同。

如果您想要一个动态数组(即更改大小),那么 Java 不提供。 您需要改用列表或其他集合。

当涉及到可变参数方法时,您可以将它们视为接受数组的方法:

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")

您没有意识到结果数组的大小都不能改变。 只要在编译时不需要知道数组的大小,数组的大小就是动态的,但是一旦创建(在运行时),数组的大小就无法更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM