public static void main(String[] args)
我知道传统上main函数接受一个参数args,它包含提供的命令行参数作为String对象数组。
String[] args
以外的任何参数的主要内容。为什么不是String
或Integer
数组? main
功能指定输入,请提供示例。 答案 0 :(得分:3)
回答你的问题:否
详细说明:
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html
java命令启动Java应用程序。它通过启动Java运行时环境,加载指定的类以及调用该类的 main 方法来实现此目的。
该方法必须声明为public和static,它不能返回任何值,必须接受String数组作为参数。方法声明具有以下形式:
public static void main(String [] args)
答案 1 :(得分:2)
如您所知,这是 main 的方法定义,而您无法更改它。但是,您可以将args
数组中的元素转换为任何其他原语类型,并将其转换为有效格式转换为类型在赋值运算符的左侧。
有多种方法可以实现这一目标,其中之一是:
int input = Integer.valueOf(args[0]);
答案 2 :(得分:1)
为什么不是字符串或整数数组?
不是Integer数组,因为该数组只会覆盖可能的参数的子集(您可以解析它们并获取Integer,但是您还需要检查它们是否为Integers,否则您将获得NumberFormatException)。
不是字符串而不是String数组,因为将命令参数分开而不是将它们放在一个大字符串中会更好,事实上,很多时候你需要单独处理命令参数。 / p>
虚拟机将无法识别为main
方法。只允许一个主要签名public static void main(String[] args)
答案 3 :(得分:1)
不,你的main方法不能只接受一个String,main方法必须使用数组语法或varagrs
语法接受一个String数组,请阅读JSL §12.1.4. Invoke Test.main
最后,完成类Test的初始化(期间) 其他相应的加载,链接和初始化可能有 发生了),调用了Test的方法main。
方法main必须声明为public,static和void。它必须 指定一个形式参数(§8.4.1),其声明的类型是数组 串。因此,可接受以下任一声明:
public static void main(String[] args)
public static void main(String... args)
因此,您可以选择语法,但不仅仅是String。
只是为了您的信息,您可以创建一个类似public static void main(String args)
的方法,但它不会被视为JVM看起来作为起点的类的“主要”方法。所以,如果你想在你的班级中使用“主”方法,那么你必须选择上述任何一种语法。
答案 4 :(得分:0)
我没有看到除String [] args之外的任何参数的主要内容。为什么不是字符串或整数数组?
是的,您可以将String
或Integer
作为参数,但这将成为一种不同的函数main()
方法,而不是java用来启动程序的方法。编译完成后,java搜索public static void main(String[] args){}
方法开始。如果更改参数,则程序根本不会运行。现在使用数组将只涵盖数组允许的特定类型的值,int[]
只会存储int
值,类似String
只能有一个值,而您可能想要多个参数
如果有办法为主要功能指定输入,请提供一个示例。
是的,有方法可以使用命令行(对于windows)和终端(对于linux / unix)传递参数。
javac Filename.java
java FileName param1 param2 param3
(param1,param2,param3是您想要传递的参数)。