【问题标题】:String[] args in main字符串 [] 参数在 main
【发布时间】:2015-08-09 17:34:38
【问题描述】:

有人能告诉我,为什么 main 方法中的 args 是 String 类型的。在

public static void main(String args[]){
}

我的意思是,为什么它不是 int 或 float 或其他东西。我被问到同样的问题,但找不到合适的答案。

【问题讨论】:

  • 你知道args的目的吗?它存储什么值?
  • 它们是命令行参数,是文本。如果你想将其中一些解析成整数,你可以这样做...
  • 当用户输入他/她的参数时,他只是输入字符串。解析它们的方式(如 ints/doubles/...)是您的责任。

标签: java arguments


【解决方案1】:

您可以像这样通过控制台运行带有参数的 java 程序:

java YourClass first second third

在java程序中你可以通过String args[]来使用它。

public static void main(String[] args) {
    Arrays.asList(args).forEach(System.out::println);
}

输出:

first
second
third

但没有必要使用这样的名称。声明main方法签名的几种方式:

public static void main(String... args)
public static void main(String[] strings)
public static void main(String [] args)

为什么它不是 int 或 float 或其他?在命令提示符下,该命令被认为是一个 字符串

【讨论】:

  • 您好 Andrew,“在命令提示符下,该命令被认为是一个字符串。”我期待这样的答案。你解释得很好。谢谢:)
  • @SimpleCoder,看看java 8 specification
【解决方案2】:

我会给你我的意见。

  1. 命令行参数是字符串,这就是数据类型的原因。
  2. 您可以轻松地从字符串中获取其他数据类型。
  3. Java 的大部分语法都是基于 C 的,而且由于 C 使用 String args,也许创建者对 java 也是这样做的。 (只是一种可能性)

【讨论】:

    【解决方案3】:

    当我们编写 java filename.java 时,这意味着您将文件名提供给要调用其 main 方法的 java 编译器,很明显您提供的文件名将是一个字符串。

    另一方面,如果你想同时给编译器任何参数,它也将是字符串而不是整数或任何其他数据类型。

    【讨论】:

      【解决方案4】:

      因为 String 可以很容易地转换为任何类型。如果它是 int 并且您想将 double 作为输入,这将如何发生?但是使用 String,您可以转换为您期望的任何内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-06
        • 2016-08-02
        • 2018-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-20
        • 1970-01-01
        相关资源
        最近更新 更多