52

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

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

8 回答 8

89

我会分手

public static void main(String args[])

部分:

public

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


static

当 JVM 调用 main 方法时,被调用的类不存在对象,因此它必须具有静态方法才能允许从类调用。


void

Java 是独立于平台的语言,如果它会返回一些值,那么该值对于不同的平台可能意味着不同的东西。还有其他方法可以在多线程系统上退出程序。详细解释


main

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


String args[]

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

于 2015-02-11T14:33:24.997 回答
34

我会将初学者指向有关 Main 功能的 Wiki 文章,然后用它来补充它。

  • Java 仅开始运行具有特定public static void main(String[] args)签名的程序,并且可以将签名想象为他们自己的名字——这就是 Java 可以区分别人的签名和真实的签名的main()方式main()

  • String[] argsStrings的集合,用空格隔开,可以在终端输入程序。很多时候,初学者不会使用这个变量,但它总是在那里以防万一。

于 2012-08-14T13:11:03.543 回答
17
public static void main(string [] args)

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

于 2014-07-11T18:08:50.147 回答
8
  • public:它是一个访问说明符,这意味着它将被公开访问。
  • static:它是访问修饰符,这意味着当加载 java 程序时,它将自动在内存中创建空间。
  • void:它是一个返回类型,即它不返回任何值。
  • main(): 它是一个方法或函数名。
  • string args[]:它是一个命令行参数,它是字符串格式的变量集合。
于 2014-10-17T12:58:50.477 回答
3

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

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

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

然后,在您了解了一些关于 Java/JVM 之类的东西之后,您最终会接触到修饰符,也就是 static 和 public。

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

您可以提及其他“很酷”的东西,例如可以在更高版本的 Java 中使用的可变参数。

public static void main(String ...args) {
        //...
    }
于 2012-08-14T13:41:09.863 回答
1

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

因为static你必须解释,它不是一个像另一个字段:它在 JVM 中是唯一的,即使你有数千个类的实例

静态也是如此main,因为它是在jar.

在你看过编码之后,你的工作就开始了。

于 2012-08-14T13:09:25.223 回答
1

我只是想我会参与这个。不过,其他人已经很好地回答了。

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

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

 }

args 被声明为 final,因为从技术上讲,它们不应被更改。它们是用户给定的控制台参数。

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

至于数组语法。我更喜欢这种方式。我想这有点像法语和英语之间的区别。在英语中是“a black car”,在法语中是“a car black”。哪个是重要的名词,汽车还是黑色?

我不喜欢这种事情:

String blah[] = {};

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

String[] blah = {};

废话只是一个名字。我个人认为在 Java 中有时可以以这种方式声明数组是一个错误。

于 2015-02-11T15:04:22.580 回答
0

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

于 2012-08-27T07:25:26.373 回答