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 方法語法

main 方法的語法始終是:

public static void main(String[] args){
	// 一些代碼
}

你只能更改String數組參數的名稱。例如,你可以將args 改為 myStringArgsString數組參數可以被寫為 String... argsString args[]

public

main 方法的訪問修飾符需要是 public,以便 JRE 可以訪問並執行此方法。如果一個方法不是 public,則訪問將受限。在以下示例代碼中,main 方法缺少了 public 訪問修飾符:

Test.java
public class Test {

	static void main(String[] args){

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

當您編譯並運行程序時,會出現以下錯誤,因為 main 方法不是 public,而 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