Java 主函数是否可以接受字符串而不是字符串[]

Java 主函数是否可以接受字符串而不是字符串[],java,parameters,command-line-arguments,main,Java,Parameters,Command Line Arguments,Main,公共静态无效字符串[]args 我知道按照惯例,main函数接受一个参数args,该参数包含作为字符串对象数组提供的命令行参数 除了String[]args之外,我没有看到main接受任何参数。为什么不是字符串或整数数组? 如果有办法指定主功能的输入,请提供一个示例。 回答你的问题:没有 详情: java命令启动一个java应用程序。它通过启动Java运行时环境、加载指定的类并调用该类的主方法来实现这一点 该方法必须声明为public和static,不能返回任何值,并且必须接受字符串数组作为参数

公共静态无效字符串[]args 我知道按照惯例,main函数接受一个参数args,该参数包含作为字符串对象数组提供的命令行参数

除了String[]args之外,我没有看到main接受任何参数。为什么不是字符串或整数数组? 如果有办法指定主功能的输入,请提供一个示例。 回答你的问题:没有

详情:

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

该方法必须声明为public和static,不能返回任何值,并且必须接受字符串数组作为参数。方法声明具有以下形式:

公共静态无效字符串[]args


正如您已经知道的,这是main的方法定义,您不能更改它。但是,可以将args数组中的元素转换为任何其他基元类型,因为它的格式有效,可以转换为赋值运算符左侧的类型

实现这一点有多种方法,其中之一是:

int input = Integer.valueOf(args[0]);
为什么不是字符串或整数数组

不是整数数组,因为该数组将只包含可能参数的子集。您可以解析它们并获得整数,但还需要检查它们是否为整数,否则将获得NumberFormatException

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

VM不会将其他签名识别为主要方法。只允许一个主签名是public static void mainString[]args

除了String[]args之外,我没有看到main接受任何参数。为什么不是字符串或整数数组

是的,您可以将任何字符串或整数作为参数,但这将成为不同的函数主方法,而不是java用来启动程序的方法。编译后,java搜索公共静态void mainString[]args{}方法开始。如果更改参数,则程序将根本无法运行。现在,使用数组将只覆盖数组允许的特定类型的值,例如int[]将只存储int值,类似地,字符串只能有一个值,而您可能希望有多个参数

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

是的,有几种方法可以使用windows命令行和linux/unix终端传递参数

使用javac Filename.java编译java程序 将java程序与参数java FileName param1 param2 param3一起运行 param1、param2、param3是要传递的参数。
不,main方法不能只接受字符串,main方法必须接受使用数组语法或varagrs语法的字符串数组,如下所示

最后,在完成初始化之后,对类进行测试 可能还有哪些其他相应的加载、链接和初始化 发生时,将调用测试的main方法

main方法必须声明为public、static和void。它必须 指定一个形式参数§8.4.1,其声明类型为数组 一串因此,以下任一声明均可接受:

公共静态无效字符串[]args

公共静态无效环。。。args

因此,您可以选择任意一种语法,而不仅仅是字符串


仅为获取您的信息,您可以创建一个类似于publicstaticvoidmainstring参数的方法,但它不会被视为类的主方法,JVM将其视为起点。因此,如果您想在类中有一个main方法,那么您必须从上述语法中进行选择。

因为命令行参数是一系列字符串,所以它们作为字符串数组提供。如果需要的话,可以在程序中将它们解析为整数。它可以是String[]或String…,而不是别的,因为JLS说它必须是这样。