【问题标题】:Why Java Only Allows String[] args as Main method Argument? [duplicate]为什么 Java 只允许 String[] args 作为 Main 方法参数? [复制]
【发布时间】:2018-05-09 17:20:19
【问题描述】:

为什么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)

【问题讨论】:

  • 因为它只允许String[]
  • 因为您在命令行上作为参数传递给程序的所有内容都可以表示为字符串。不是双精度数或整数。
  • 正是我的问题,为什么只有 String[ ] 而没有别的? @luk2302
  • 因为这就是documentation 所说的:方法声明具有以下形式:public static void main(String[] args),这是有道理的,因为(正如 JB 已经说过的)传递的值在命令行上实际上是字符串。如果您想要其他内容,根据需要进行转换并在您认为合适的情况下处理错误。
  • 要允许int[],您需要从命令行转换数字,您需要决定如何执行此操作以及在失败时如何处理。最好把这样的决定留给程序员。在您的程序中,您可以轻松转换。

标签: java arrays main


【解决方案1】:

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

java YourMainClass

命令行参数紧随其后:

java YourMainClass arg1 arg2 arg3

这将使args 字符串数组包含"arg1""arg2""arg3"。如果您将args 数组设为int[],那么arg1 到底要如何放入int

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

根据 JLS,

第 12.1.4 节:

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

方法 main 必须声明为 public、static 和 void。它必须 指定一个声明类型为 array of 字符串

【讨论】:

    猜你喜欢
    • 2010-10-18
    • 2016-01-31
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 2014-02-22
    相关资源
    最近更新 更多