【问题标题】:Is string args[] in java implemented as varargs? [closed]java中的字符串args []是否实现为可变参数? [关闭]
【发布时间】:2013-03-08 15:30:32
【问题描述】:

public static void main(String args[])String args[]是如何实现的?是否实现为varargs

我问这个是因为args.length 只给出传递的参数数量,这意味着它没有像String args[] = new String[30] 那样在任何地方定义。这个数组是如何实现的?

【问题讨论】:

  • 我是public static void main(String[] args)...
  • @nkr String[] argsString args[] 是同一事物的等效符号 - 一个参数的类型是 String 的数组
  • @Ian:糟糕,不知道,谢谢。

标签: java main variadic-functions args


【解决方案1】:

它完全按照它的外观实现 - 作为一个字符串数组。另一方面,可变参数被实现为一个数组——String... 只是String[] 的语法糖。

【讨论】:

    【解决方案2】:

    它被声明(未实现)但是说它被声明了。使用 varargs 声明函数是完全合法的:

    public static void main(String... argv)
    

    编译器采用可变参数声明并将其转换为字节码中的String[]。对于使用可变参数的所有函数会发生这种情况。

    当 JVM 开始运行您的程序时,它会创建一个与命令行参数数量完全相同的数组(不包括任何为 JVM 本身设计的参数,如 -D)。然后它在指定的类中搜索一个 main 函数并调用它。

    【讨论】:

      【解决方案3】:

      它只是一个字符串数组,它使用启动时传递给进程的参数值进行初始化。它不是一个变量参数列表。

      【讨论】:

        猜你喜欢
        • 2012-12-17
        • 1970-01-01
        • 1970-01-01
        • 2018-05-09
        • 2022-06-28
        • 1970-01-01
        • 2021-07-22
        • 2022-12-07
        • 2011-11-17
        相关资源
        最近更新 更多