介紹
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 方法語法
main
方法的語法始終是:
public static void main(String[] args){
// 一些代碼
}
你只能更改String
數組參數的名稱。例如,你可以將args
改為 myStringArgs
。String
數組參數可以被寫為 String... args
或 String args[]
。
public
main
方法的訪問修飾符需要是 public
,以便 JRE 可以訪問並執行此方法。如果一個方法不是 public,則訪問將受限。在以下示例代碼中,main
方法缺少了 public
訪問修飾符:
public class Test {
static void main(String[] args){
System.out.println("Hello, World!");
}
}
當您編譯並運行程序時,會出現以下錯誤,因為 main
方法不是 public,而 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 教程。