public static void main(String [] args)– Java main方法
public static void main(String [] args)是最重要的Java方法。
当您开始学习Java编程时,这是您遇到的第一种方法。
还记得您编写的第一个运行并打印" Hello World"的Java Hello World程序吗?
public static void main(String [] args)
Java主要方法是任何Java程序的入口点。
它的语法总是public static void main(String [] args)
。
您只能更改String数组参数的名称,例如,可以将args更改为myStringArgs。
String数组参数也可以写成String ... args
或者String args []
。
让我们仔细看看java main方法,并尝试理解其每个部分。
public
这是main方法的访问修饰符。
它必须是" public",以便Java运行时可以执行此方法。
请记住,如果您将任何方法设为非公开,那么任何程序都不允许执行该方法,因此会应用一些访问限制。
因此,这意味着主要方法必须是公开的。
让我们看看如果将main方法定义为非公开方法会发生什么。
public class Test { static void main(String[] args){ System.out.println("Hello World"); } }
$javac Test.java $java Test Error: Main method not found in class Test, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application $
static
当Java运行时启动时,不存在该类的对象。
这就是为什么main方法必须是静态的,以便JVM可以将类加载到内存中并调用main方法的原因。
如果main方法不是静态的,则JVM将无法调用它,因为不存在该类的对象。
让我们看看当从java main方法中删除static时会发生什么。
public class Test { public void main(String[] args){ System.out.println("Hello World"); } }
$javac Test.java $java Test Error: Main method is not static in class Test, please define the main method as: public static void main(String[] args) $
void
Java编程要求每个方法都必须提供返回类型。
Java main方法不返回任何内容,这就是其返回类型为" void"的原因。
这样做是为了使事情简单,因为一旦main方法完成执行,java程序就会终止。
因此,返回任何东西都是没有意义的,JVM无法对返回的对象做任何事情。
如果我们尝试从main方法返回某些内容,它将给出编译错误,作为意外的返回值。
例如,如果我们有如下所示的main方法。
public class Test { public static void main(String[] args){ return 0; } }
当上面的程序被编译时,我们得到下面的错误。
$javac Test.java Test.java:5: error: incompatible types: unexpected return value return 0; ^ 1 error $
main
这是java main方法的名称。
它是固定的,当我们启动Java程序时,它会寻找主要方法。
例如,如果我们有一个像下面这样的类。
public class Test { public static void mymain(String[] args){ System.out.println("Hello World"); } }
并且我们尝试运行该程序,它将引发一个错误,即未找到main方法。
$javac Test.java $java Test Error: Main method not found in class Test, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application $
String[] args
Java main方法接受String数组类型的单个参数。
这也称为java命令行参数。
让我们看一下使用Java命令行参数的示例。
public class Test { public static void main(String[] args){ for(String s : args){ System.out.println(s); } } }
上面是一个简单的程序,我们其中打印命令行参数。
让我们看看在执行上述程序时如何传递命令行参数。
$javac Test.java $java Test 1 2 3 1 2 3 $java Test "Hello World" "hyman Kumar" Hello World hyman Kumar $java Test $