不需要命令行参数的程序是不是需要 String args[] 参数?
Posted
技术标签:
【中文标题】不需要命令行参数的程序是不是需要 String args[] 参数?【英文标题】:Is the String args[] parameter needed for programs that do not require command line arguments?不需要命令行参数的程序是否需要 String args[] 参数? 【发布时间】:2015-10-07 15:50:07 【问题描述】:据我所知,String args[]
接受 String
类型的元素数组 - 运行时系统通过该机制将信息传递给应用程序。
如果我们采用这样一个简单的加法程序:
class Add
public static void main(String args[])
int x = 10;
int y = 30;
int c = x + y;
System.out.println(c);
很明显,程序不需要任何命令行参数来计算结果。没有值传递给 args 数组。那么,是否有必要包含这个数组,还是 main()
语法要求我们不这样做?
【问题讨论】:
你不会在 c# 中。我会说尝试一下... “合理”是指“必要”吗? 主函数必须有那个签名。 如前所述,您无法更改方法签名,但您可以忽略args[]
的内容(或缺少这些内容),假设您不需要使用它们。
【参考方案1】:
您必须拥有一个名为 public static void main(String[] args)
的函数作为 Java 程序的入口点。
如果您查看实际 java command 的文档,它会明确说明:
java 命令启动 Java 应用程序。它通过启动 Java 运行时环境 (JRE)、加载指定的类并调用该类的 main() 方法来完成此操作。该方法必须声明为 public 和 static,它不能 返回任何值,并且它必须接受一个字符串数组作为参数。方法声明的形式如下:
public static void main(String[] args)
这和JavaFX程序是有区别的; its initial entry point 位于start()
函数中。
【讨论】:
为了记录,如果你尝试使用varargs feature,写public static void main(String... args)
,你会发现这也有效。【参考方案2】:
来自The Java Tutorials:
在 Java 编程语言中,每个应用程序都必须包含一个 main 方法,其签名是:
public static void main(String[] args)
【讨论】:
【参考方案3】:是的 - 如果你忽略参数,你会得到以下错误:
错误:在 nl.magnus.test.Test 类中找不到主方法,请将主方法定义为: public static void main(String[] args)
main
的此要求由 Oracle 在 Java SE specifications 中指定:
最后,在Test类的初始化完成后(在此期间可能发生了其他相应的加载、链接和初始化),调用Test的main方法。
方法 main 必须声明为 public、static 和 void。它必须指定一个声明类型为字符串数组的形式参数(第 8.4.1 节)。因此,可以接受以下任一声明:
public static void main(String[] args)
public static void main(String...args)
【讨论】:
【参考方案4】:简短的回答 - 是的。你的main
方法必须有一个String[]
参数,即使它不使用它。
如果它没有这样的参数,Java 只是将其视为任何其他 public static
方法,而不是程序的入口点。
【讨论】:
【参考方案5】:这是Java中程序入口点的必需定义。你必须拥有它。
【讨论】:
【参考方案6】:无论你是否从命令行发送运行时参数,它都是main()
方法的语法。
任何程序的执行都只会以main()
这个签名开始:-
public static void main(String args[])
【讨论】:
以上是关于不需要命令行参数的程序是不是需要 String args[] 参数?的主要内容,如果未能解决你的问题,请参考以下文章
如何知道 std::string/Cstring 中的值是不是为数字