在使用Java工作近一年后,我仍然无法向其他人或我自己解释为什么我们需要它,以及它是如何工作的。
显然,我知道每个关键字的独立性,但我不确定整个事情。
有人可以用非常简单的语言描述它吗?
答案 0 :(得分:4)
Public:是一个Access Modifier,它定义了谁可以访问此方法。公共意味着任何类都可以访问此方法(如果其他类能够访问此类。)。
静态:是一个标识类相关事物的关键字。这意味着给定的方法或变量与实例无关,但与类相关。可以在不创建类实例的情况下访问它。
Void:用于定义Method的Return Type。它定义了方法可以返回的内容。 Void意味着Method不会返回任何值。
main:是Method的名称。 JVM将此方法名称作为仅具有特定签名的应用程序的起点进行搜索。
String args []:是主方法的参数。
答案 1 :(得分:2)
其他答案是正确的,但我会尝试用英语说明。 当您创建程序时,java需要知道启动程序的位置,因此他们将此作为入口点。由于它是静态方法,因此不需要是类的实例化。它可以简单地调用该方法并知道程序启动的位置。
答案 2 :(得分:1)
我知道这些已经感谢你的回应和downvotes。
公共
这意味着您可以从当前所在类的外部调用此方法。这是必要的,因为此方法由Java运行时系统调用,该系统不在您当前的类中。
静态
当JVM调用main方法时,没有对象被调用,因此它必须有静态方法来允许从类调用。
空隙
Java是与平台无关的语言,如果它返回一些值,那么该值可能对不同平台意味着不同的东西。还有其他方法可以在多线程系统上退出程序。详细解释。
主
这只是方法的名称。此名称是固定的,因为它被JVM称为应用程序的入口点。
String args []
这些是Java应用程序在运行时接受的String类型的参数。
但是为什么没有像其他语言一样调用main的简单方法,以及为什么我们需要获取参数并存储为String,而我们有时只调用main中的方法。
答案 3 :(得分:1)
当您启动Java程序时,JVM需要知道应该从哪里开始执行整个程序。这并不明显,因为类路径上有数千个Java类可用。 这就是为什么你必须在命令行中给出一个特定Java类的名称。例如
java com.stackoverflow.example.Main bla blah
JVM然后只加载此类,查找其static void main(String[] args)
方法,并使用从命令行获取的其余参数调用它
main(new String[]{"bla", "blah"});
答案 4 :(得分:0)
main()
方法由java
启动器定义:
java
命令启动Java应用程序。它通过启动Java运行时环境(JRE),加载指定的类并调用该类的main()
方法来完成此操作。该方法必须声明为 public 和 static ,它不能返回任何值,并且必须接受String
数组作为参数。方法声明具有以下形式:public static void main(String[] args)
这解释了为什么需要它:需要开始运行Java程序。
它是如何工作的:它在启动时被启动器调用。