gpt4 book ai didi

java - 为什么必须将 `String[] args` 作为 main() 参数?

转载 作者:行者123 更新时间:2023-11-29 03:03:27 41 4
gpt4 key购买 nike

我不是在问什么是 (String args[]) 因为这里已经回答了这个问题:What is "String args[]"? parameter in main method Java .

我的问题是为什么一定要边写main()边写?

我参加了实践考试,遇到了一个问题,意识到我在编写 public static void main() 时没有编写 String args[]。但是后来写完 main(String args[]) 问题就解决了。 (如何以及为什么我仍然不知道!)

在同一天,我在 Viva 被问到 - “是否有必要在编写 main() 时编写此 String args[]?”由于发生的错误,我回答了"is",但当被问及“为什么?”时,我没有回答。
所以我想知道为什么需要写 String[] args

最佳答案

来自 Java Language Specification 12.1.4

The method main must be declared public, static, and void. It must specify a formal parameter (§8.4.1) whose declared type is array of String. Therefore, either of the following declarations is acceptable:

public static void main(String[] args)

public static void main(String... args)

(请注意,您不能在同一个类中使用两个 main 方法,分别为 String[]String... ,因为 varargs 只是语法糖,在编译时将被替换为数组,所以您最终会得到两种处理 String[] 的方法,并且一个类不能有两个同名的方法,参数)

所以当你执行像这样的命令时

java YourClass foo bar

Java 虚拟机会将 foobar 参数放在 String[] 数组中,并尝试将该数组传递给 main 可以接受它作为参数的方法。

当命令没有任何参数时也使用此方法,例如

java YourType

这个决定简​​化了我们的生活,因为我们不需要专注于处理有两个入口点的情况

  • 一个用于带参数的命令
  • 还有一个命令没有任何参数。

我们可以简单地允许用户传递参数,但如果我们不想处理它们,我们可以简单地忽略它们。

还要记住,我们可以在我们的类中拥有任何具有适当声明的方法(并且不违反从父类(super class)继承的任何规则,例如扩大成员可见性 - 我们不能公开 protected 方法),所以没有什么错误的拥有

public static void main(){
/*your code*/
}

但是你需要意识到这个方法不能用作入口点,所以如果你想从这个方法开始你的应用程序你需要创建适当的main 方法将执行你的 main() 方法:

public static void main(String ...){
main();
}

关于java - 为什么必须将 `String[] args` 作为 main() 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33454612/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com