public static void main(String[] args) – Java 主方法

介绍

Java main 方法通常是你开始学习 Java 编程时首先了解的方法,因为它是执行 Java 程序的入口点。 main 方法可以包含要执行或调用其他方法的代码,并且可以放置在程序的任何一个类中。更复杂的程序通常会有一个仅包含 main 方法的类。包含 main 方法的类可以有任何名称,尽管通常你可以简单地将类命名为 Main

在接下来的示例中,包含 main 方法的类被称为 Test

Test.java
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 改为 myStringArgsString 数组参数可以写作 String... argsString args[]

public

main 方法的访问修饰符需要设为 public,以便 JRE 可以访问并执行此方法。如果方法不是公共的,访问就会受到限制。在以下示例代码中,main 方法缺少 public 访问修饰符:

Test.java
public class Test {

	static void main(String[] args){

		System.out.println("Hello, World!");
	
	}
}

当编译和运行程序时,会出现以下错误,因为 main 方法不是公共的,JRE 无法找到它:

  1. javac Test.java
  2. java Test
Output
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 方法必须是 static,以便 JVM 可以将类加载到内存中,并在创建类的实例之前调用 main 方法。在以下示例代码中,main 方法缺少 static 修饰符:

Test.java
public class Test {

	public void main(String[] args){

		System.out.println("Hello, World!");
	
	}
}

当编译和运行程序时,会出现以下错误,因为 main 方法不是 static 的:

  1. javac Test.java
  2. java Test
Output
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程序终止,因此不需要返回对象。在以下示例代码中,main 方法尝试在返回类型为 void 时返回某些内容:

Test.java
public class Test {

	public static void main(String[] args){
	
		return 0;
	}
}

编译程序时,会发生以下错误,因为Java不期望在返回类型为 void 时返回值:

  1. javac Test.java
Output
Test.java:5: error: incompatible types: unexpected return value return 0; ^ 1 error

main

Java main 方法的名称始终为 main。当Java程序启动时,它总是寻找 main 方法。以下示例代码展示了一个将 main 方法重命名为 myMain 的情况:

Test.java
public class Test {

	public static void myMain(String[] args){

		System.out.println("Hello, World!");
	}
}

编译并运行程序时,会发生以下错误,因为JRE找不到类中的 main 方法:

  1. javac Test.java
  2. java Test
Output
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数组类型的单个参数。数组中的每个字符串都是一个命令行参数。您可以使用命令行参数来影响程序的操作,或在运行时向程序传递信息。以下示例代码显示了如何打印您在运行程序时输入的命令行参数:

Test.java
public class Test {

	public static void main(String[] args){

    	for(String s : args){
		System.out.println(s);
    	}
	
    }
}

当您编译该程序,然后用几个由空格分隔的命令行参数运行它时,这些参数将在终端中打印出来:

  1. javac Test.java
  2. java Test 1 2 3 "Testing the main method"
Output
1 2 3 Testing the main method

结论

在本文中,您了解了Java main方法的每个组成部分。继续学习更多Java教程

Source:
https://www.digitalocean.com/community/tutorials/public-static-void-main-string-args-java-main-method