'String args []'和'public static void main(String [] args)'中的静态的解释

时间:2012-08-14 13:00:31

标签: java main

您如何能够很好地解释初学者String args[]的含义以及static在以下摘录中的用法?

class FirstApp {
    public static void main(String[] args) {
        ...
    }
}

8 个答案:

答案 0 :(得分:70)

我会分手

public static void main(String args[])

部分:

  

public

     

这意味着您可以从当前所在类的外部调用此方法。这是必要的,因为此方法由Java运行时系统调用,该系统不在您当前的类中。


  

static

     

当JVM调用main方法时,没有对象被调用,因此它必须有静态方法来允许从类调用。


  

void

     

Java是与平台无关的语言,如果它返回一些值,那么该值可能对不同平台意味着不同的东西。还有其他方法可以在多线程系统上退出程序。 Detailed explaination


  

main

     

这只是方法的名称。此名称是固定的,因为它被JVM称为应用程序的入口点。


  

String args[]

     

这些是Java应用程序在运行时接受的String类型的参数。

答案 1 :(得分:32)

我会将初学者指向Wiki article on the Main function,然后用此补充。

  • Java只开始运行具有特定public static void main(String[] args)签名的程序,并且可以想到签名就像他们自己的名字一样 - 这就是Java如何区分别人的main()和一个真main()

  • String[] argsString的集合,由空格分隔,可以在终端上输入程序。更多的时候,初学者不会使用这个变量,但总是存在以防万一。

答案 2 :(得分:14)

public static void main(string [] args)

public - 访问说明符是指我们可以访问它的每个地方; static -access修饰符意味着我们可以直接使用类名调用此方法而无需创建它的对象; void - 它的返回类型; main - 方法名称 string [] args - 它只接受字符串类型的参数...并将其存储在字符串数组

答案 3 :(得分:6)

  • public:它是一个访问说明符,意味着它将被公开访问。
  • static:它是访问修饰符,表示当java程序加载时,它会自动在内存中创建空间。
  • void:它是一种返回类型,即它不返回任何值。
  • main():它是方法或函数名称。
  • string args[]:它是一个命令行参数,它是字符串格式的变量集合。

答案 4 :(得分:3)

如果我向某人解释这个问题,我会说我们稍后会讨论这个问题,你需要知道运行程序的方法是使用:

public static void main(String[] args) {
        ...
    }

假设他/她知道数组是什么,我会说args是一个参数数组,你可以展示一些很酷的例子。

然后,在你对Java / JVM及其他东西有所了解之后,你最终会将修改器变为静态和公共。

然后你可以花一些时间谈论这些恕我直言的意思。

您可以提及其他“酷”的内容,例如varargs,您可以在Java的更高版本中使用它。

public static void main(String ...args) {
        //...
    }

答案 5 :(得分:1)

为了保持初学者的态度,您可以解释所有命令行都是自动拼接成一个字符串数组(String[])。

对于static,您必须解释,它不是另一个字段:即使您有数千个类的实例,它在JVM中也是唯一的

所以main是静态的,因为它是在jar中找到它(在自己的类中链接)的唯一方法。

......看完编码后,你的工作就开始......

答案 6 :(得分:1)

我只是觉得我会参与其中。但是其他人已经很好地回答了这个问题。

完整的主要方法声明应该是:

 public static void main(final String[] args) throws Exception {

 }

args被宣布为final,因为从技术上讲,它们不应该被改变。它们是用户给出的控制台参数。

您通常应该指定main抛出Exception,以便可以轻松地将堆栈跟踪回显到控制台,而无需执行e.printStackTrace()等。

对于数组语法。我更喜欢这种方式。我想这有点像法语和英语之间的区别。 在英语中它是一辆黑色汽车",在法语中它是"一辆汽车黑"。 哪个是重要的名词,汽车还是黑色?

我不喜欢这样的事情:

String blah[] = {};

这里重要的是它是一个String数组,所以它应该是

String[] blah = {};
blah只是一个名字。我个人认为在Java中有点错误,有时可以以这种方式声明数组。

答案 7 :(得分:0)

static的正常用法是直接访问函数而不创建任何对象。与java main相同,我们无法为该类创建任何对象来调用main方法。它会自动执行。如果我们想手动执行,我们可以通过使用类中的main()和类外的ClassName.main来调用。