可以主函数取字符串而不是字符串[]

问题描述:

public static void main(String[] args) 我通常知道主函数接受一个参数args,它包含提供的命令行参数作为一个String对象数组。可以主函数取字符串而不是字符串[]

  • 我还没有看到主要除了String[] args以外的任何参数。为什么不是StringInteger
  • 如果有一种方法可以指定main函数的输入,请提供示例。
+4

因为命令行参数是一系列字符串,所以它们以字符串数组的形式给出。如果这是你想要的,你可以将它们解析为程序中的整数。 – khelwood

+2

它可以是'String []'或'String ...',没有别的,因为这就是JLS所说的。 – azurefrog

回答你的问题:NO

详情:

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html

java命令启动一个Java应用程序。它通过启动Java运行时环境,加载指定的类并调用该类的主要方法

该方法必须声明为公共和静态,它不能返回任何值,它必须接受一个字符串数组作为参数。该方法声明具有如下形式:

公共静态无效的主要(字串[] args)

正如你已经知道,是主要方法定义和你不能改变它。但是,您可以在args数组中的元素转换为任何其他原始类型考虑,它是有效的格式转换为的类型的分配运算符的左侧。

有多种方式来实现这一目标,其中之一是:

int input = Integer.valueOf(args[0]); 

为什么不字符串或整数数组?

不是整数数组,因为该数组将只涉及可能的参数的子集(您可以分析他们,并得到一个整数,但你还需要检查,如果他们是整数,否则你会得到一个NumberFormatException异常) 。

不是一个字符串而是一个字符串数组,因为最好让命令参数分开而不是将它们放在一个大字符串中,事实上,很多时候您需要单独处理命令参数。

虚拟机将识别为main方法。只有一个主签名允许是public static void main(String[] args)

我还没有看到主要参数除String []参数以外的任何参数。为什么不是一个字符串或整数数组?

是的,你可以采取任何StringInteger为参数,但是这将成为一个不同的功能main()方法,而不是使用Java来启动程序之一。编译后,java搜索public static void main(String[] args){}方法开始。如果你改变参数,那么你的程序将不会运行。现在使用数组将只覆盖数组可以允许的特定类型的值,例如int[]只会存储int值,类似地String只能有一个值,而您可能希望有多个参数。

如果有办法指定主功能的输入,请举例说明。

是的,有办法使用命令行(对于Windows)和终端(对于linux/unix)传递参数。

  1. 使用javac Filename.java
  2. 运行Java程序与参数一起编译Java程序java FileName param1 param2 param3 (参数1,参数2,参数3是要传递参数)。

不,你的主要方法不能拿只是一个字符串,主要方法必须使用数组语法或varagrs语法接受一个String数组,请阅读以下JSL §12.1.4. Invoke Test.main

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

方法main必须声明为public,static和void。它必须 指定一个形式参数(§8.4.1)其声明的类型是数组 字符串。因此,无论下面的声明是可以接受的

public static void main(String[] args)

public static void main(String... args)

所以,你可以选择要么是语法,但不只是一个字符串。

只是为了您的信息,您可以创建一个像public static void main(String args)这样的方法,但它不会被视为JVM看起来是类的“主要”方法的起点。所以,如果你想在你的课堂上有一个“主要”方法,那么你必须从上面的语法中选择一种。