当前位置: 首页 > 知识库问答 >
问题:

为什么Java只允许String[] args作为主方法参数?[重复]

贾建茗
2023-03-14

为什么Java只允许main方法采用String[] args形式的参数?即字符串数组

public static void main(String[] args)

为什么Java不允许int或double数组

public static void main(int[] args)

public static void main(double[] args

为什么它不允许单个字符串或int或float而不是字符串数组呢?类似于:

public static void main(String args)

public static void main(int i)

共有1个答案

魏彦
2023-03-14

这是您在命令行中运行java程序的方式:

java YourMainClass

其后是命令行参数:

java YourMainClass arg1 arg2 arg3

这将使args字符串数组包含 。如果您将 args数组设置为 int[],那么 究竟如何放入

从JVM的角度来看,将命令行参数放在Strings中是最安全的选择。用户输入的任何内容,都必须是一堆chars。

根据JLS,

第12.1.4节:

最后,在完成类测试的初始化后(在此期间可能发生了其他相应的加载、链接和初始化),调用测试的方法main。

方法main必须声明为公共的、静态的和无效的。它必须指定一个形式参数(第8.4.1节),其声明的类型是字符串数组。

 类似资料:
  • 问题内容: 我刚刚开始用Java编写程序。以下Java代码是什么意思? What is String[] args? When would you use these args? 源代码和/或示例优先于抽象解释 问题答案: 在Java中,包含提供的命令行参数作为对象数组。 换句话说,如果你运行你的程序作为然后将包含。 如果要输出的内容,可以像这样遍历它们…

  • 问题内容: 由于它可能是Java语言中使用最广泛的方法之一,因此为什么它必须接受字符串数组并且没有它就无法工作?例如,我可以一直住: 过度 除了能够接受命令行参数之外,还有其他更高的目的吗,尤其是因为绝大多数Java程序都是GUI驱动的,并且不需要通过命令行接收args? 问题答案: 甚至GUI驱动的Java应用程序也将从某些主要方法开始。“更高的目的”从来没有接受命令行参数。 目的只是接受参数。

  • 我在YouTube上跟随编译器教程视频,当我遇到这样一个事实,即C编程语言更快,因为它允许静态链接和动态链接,但Java只允许动态链接,这就是为什么C比Java快得多。 我的问题是,如果静态链接使程序运行得更快,为什么它不包括在Java中?我知道Java的开发人员做出不包括静态链接的决定肯定有一些真正的好理由,我只是想知道原因是什么。 注意:我不知道这个问题是否已经在SO上有答案,但是因为我找不到

  • 问题内容: 我知道String [] args是作为参数传递给main的字符串数组。 但是,当您不将其包含为参数时(即使您不使用它),它也会引发异常。那么为什么需要它呢?另外,为什么不能是int []或boolean []? 问题答案: 这是一个字符串,因为命令行以文本形式表示。如果要将文本转换为整数或布尔值,则必须自己做- 操作系统或Java引导程序如何确切知道您希望如何解析所有内容?我想Jav

  • 为什么编译器匹配字符串重载,而不是对象重载?

  • 当重写超类的方法时,Java 允许返回类型是协变的。 为什么在覆盖方法时不允许相反的逆变参数类型?