是不是需要命令行参数的程序需要String args []参数?

时间:2015-07-17 20:18:11

标签: java command-line main

据我所知,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()语法是否要求我们这样做?

6 个答案:

答案 0 :(得分:4)

必需将一个名为public static void main(String[] args)的函数作为Java程序的入口点。

如果您查看实际java command的文档,则会明确说明:

  

java 命令启动Java应用程序。它通过启动Java运行时环境(JRE),加载指定的类并调用该类的main()方法来实现。该方法必须声明为public和static,否则不能          返回任何值,它必须接受一个String数组作为参数。方法声明具有以下形式:

public static void main(String[] args)

这与JavaFX程序有所不同; its initial entry point位于start()函数中。

答案 1 :(得分:2)

是 - 如果您退出参数,您将收到以下错误:

  

错误:在类nl.magnus.test.Test中找不到主方法,请将main方法定义为:      public static void main(String [] args)

main的这一要求由Oracle在Java SE specifications

中指定
  

最后,在完成类Test的初始化之后(在此期间可能发生了其他相应的加载,链接和初始化),调用了Test的方法main。

     

方法main必须声明为public,static和void。它必须指定一个形式参数(第8.4.1节),其声明的类型是String数组。因此,可以接受以下任一声明:

     

public static void main(String [] args)

     

public static void main(String ... args)

答案 2 :(得分:2)

简短的回答 - 是的。您的main方法必须具有String[]参数,即使它不使用它。

如果没有这样的参数,Java只会将其视为任何其他public static方法,而不是程序的入口点。

答案 3 :(得分:2)

来自The Java Tutorials

  

在Java编程语言中,每个应用程序都必须包含一个签名为:

的main方法      

public static void main(String [] args)

答案 4 :(得分:0)

这是Java中程序入口点的必需定义。你必须拥有它。

答案 5 :(得分:0)

它是main()方法的语法,无论是否从命令行发送运行时args。

任何程序的执行只能从main()的签名开始: -

public static void main(String args[])