有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

最佳示例:公共静态void main(字符串…参数) 因此,使用这个可变长度参数,我们实际上可以为args数组插入任意数量的元素。这是什么矛盾,java的基本规则说您不能,但另一个特性支持这样做


共 (3) 个答案

  1. # 1 楼答案

    But we all know that there is a java feature called variable length arguments ,which will create a dynamic array.

    不,不会。它将创建一个静态大小的数组,静态大小由命令行参数的数量定义(在您的示例中)。创建此数组后,无法增加或减少其大小。这和创建一个固定数组没有什么不同,数组的大小是通过编程计算的

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

  2. # 2 楼答案

    这并不矛盾。不变的是已创建的数组的大小

    So using this variable length arguments we can actually insert any amount of elements for the args array

    是的,(String... args)允许您为数组指定任何大小,如下所示:

    main(String[] args) //called with (new String[]{"a", "b", "c"})
    

    允许您为args选择任何大小。通过调用main(String...)

    main("a", "b", "c")
    

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

  3. # 3 楼答案

    说到vararg方法,可以将其视为接受数组的方法:

    public void f(String... args)
    

    public void f(String [] args) 
    

    这只是一种语法上的糖分,允许使用varags定义的方法被称为:

    f("a","b","c")
    

    而不是先创建数组

    但如果是这样,则应该在创建数组时指定数组的长度(在外部)。此特定函数f将在运行时接受任意长度的数组