介绍
Java main
方法通常是你开始学习 Java 编程时首先了解的方法,因为它是执行 Java 程序的入口点。 main
方法可以包含要执行或调用其他方法的代码,并且可以放置在程序的任何一个类中。更复杂的程序通常会有一个仅包含 main
方法的类。包含 main
方法的类可以有任何名称,尽管通常你可以简单地将类命名为 Main
。
在接下来的示例中,包含 main
方法的类被称为 Test
:
public class Test {
public static void main(String[] args){
System.out.println("Hello, World!");
}
}
在本文中,您将学习 main
方法的每个组成部分的含义。
Java Main 方法语法
public static void main(String[] args){
// 一些代码
}
你只能更改 String
数组参数的名称。例如,你可以将 args
改为 myStringArgs
。 String
数组参数可以写作 String... args
或 String args[]
。
public
main
方法的访问修饰符需要设为 public
,以便 JRE 可以访问并执行此方法。如果方法不是公共的,访问就会受到限制。在以下示例代码中,main
方法缺少 public
访问修饰符:
public class Test {
static void main(String[] args){
System.out.println("Hello, World!");
}
}
当编译和运行程序时,会出现以下错误,因为 main
方法不是公共的,JRE 无法找到它:
- javac Test.java
- java Test
OutputError: 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
方法必须是 static
,以便 JVM 可以将类加载到内存中,并在创建类的实例之前调用 main
方法。在以下示例代码中,main
方法缺少 static
修饰符:
public class Test {
public void main(String[] args){
System.out.println("Hello, World!");
}
}
当编译和运行程序时,会出现以下错误,因为 main
方法不是 static
的:
- javac Test.java
- java Test
OutputError: 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程序终止,因此不需要返回对象。在以下示例代码中,main
方法尝试在返回类型为 void
时返回某些内容:
public class Test {
public static void main(String[] args){
return 0;
}
}
编译程序时,会发生以下错误,因为Java不期望在返回类型为 void
时返回值:
- javac Test.java
OutputTest.java:5: error: incompatible types: unexpected return value
return 0;
^
1 error
main
Java main
方法的名称始终为 main
。当Java程序启动时,它总是寻找 main
方法。以下示例代码展示了一个将 main
方法重命名为 myMain
的情况:
public class Test {
public static void myMain(String[] args){
System.out.println("Hello, World!");
}
}
编译并运行程序时,会发生以下错误,因为JRE找不到类中的 main
方法:
- javac Test.java
- java Test
OutputError: 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
数组类型的单个参数。数组中的每个字符串都是一个命令行参数。您可以使用命令行参数来影响程序的操作,或在运行时向程序传递信息。以下示例代码显示了如何打印您在运行程序时输入的命令行参数:
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 "Testing the main method"
Output1
2
3
Testing the main method
结论
在本文中,您了解了Java main
方法的每个组成部分。继续学习更多Java教程。