main函数可以采用String而不是String []

时间:2017-05-01 15:46:50

标签: java parameters command-line-arguments main

public static void main(String[] args) 我知道传统上main函数接受一个参数args,它包含提供的命令行参数作为String对象数组。

  • 我没有看到String[] args以外的任何参数的主要内容。为什么不是StringInteger数组?
  • 如果有办法为main功能指定输入,请提供示例。

5 个答案:

答案 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之外的任何参数的主要内容。为什么不是字符串或整数数组?

是的,您可以将StringInteger作为参数,但这将成为一种不同的函数main()方法,而不是java用来启动程序的方法。编译完成后,java搜索public static void main(String[] args){}方法开始。如果更改参数,则程序根本不会运行。现在使用数组将只涵盖数组允许的特定类型的值,int[]只会存储int值,类似String只能有一个值,而您可能想要多个参数

  

如果有办法为主要功能指定输入,请提供一个示例。

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

  1. 使用javac Filename.java
  2. 编译您的java程序
  3. 运行java程序以及参数java FileName param1 param2 param3 (param1,param2,param3是您想要传递的参数)。