可以主函数取字符串而不是字符串[]
public static void main(String[] args)
我通常知道主函数接受一个参数args,它包含提供的命令行参数作为一个String对象数组。可以主函数取字符串而不是字符串[]
- 我还没有看到主要除了
String[] args
以外的任何参数。为什么不是String
或Integer
? - 如果有一种方法可以指定
main
函数的输入,请提供示例。
回答你的问题: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 []参数以外的任何参数。为什么不是一个字符串或整数数组?
是的,你可以采取任何String
或Integer
为参数,但是这将成为一个不同的功能main()
方法,而不是使用Java来启动程序之一。编译后,java搜索public static void main(String[] args){}
方法开始。如果你改变参数,那么你的程序将不会运行。现在使用数组将只覆盖数组可以允许的特定类型的值,例如int[]
只会存储int
值,类似地String
只能有一个值,而您可能希望有多个参数。
如果有办法指定主功能的输入,请举例说明。
是的,有办法使用命令行(对于Windows)和终端(对于linux/unix)传递参数。
- 使用
javac Filename.java
- 运行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看起来是类的“主要”方法的起点。所以,如果你想在你的课堂上有一个“主要”方法,那么你必须从上面的语法中选择一种。
因为命令行参数是一系列字符串,所以它们以字符串数组的形式给出。如果这是你想要的,你可以将它们解析为程序中的整数。 – khelwood
它可以是'String []'或'String ...',没有别的,因为这就是JLS所说的。 – azurefrog