為什麼Java中的main()方法必須是靜態的?
靜態 − 如果您宣告一個靜態的方法、子類、塊或變數,它將與類一起載入。
在 Java 中,每當我們需要呼叫一個(例項)方法時,我們都應該例項化(包含它的)類並呼叫它。如果我們需要在不例項化的情況下呼叫一個方法,它應該為靜態的。此外,靜態方法與類一起載入到記憶體中。
對於 main 方法,它由 JVM 直接呼叫,因此無法透過例項化其類來呼叫它。並且,它應該與類一起載入到記憶體中並可供執行。因此,main 方法應該是靜態的。
當 main 方法是非靜態時
public static void main(String ar[]) 方法是 Java 中執行的入口點。當我們執行一個 .class 檔案時,JVM 會搜尋 main 方法並逐行執行其內容。
您可以在程式中編寫不帶 static 修飾符的 main 方法,程式會在不出現編譯錯誤的情況下進行編譯。但是,在執行時,JVM 不會將此新方法(不帶 static)視為程式的入口點。
它會搜尋 public、static、返回型別為 void 且引數為字串陣列的 main 方法。
public static int main(String[] args){ }
如果找不到這樣的方法,則會生成執行時錯誤。
示例
在下面的 Java 程式中,在 Sample 類中,我們有一個 main 方法,它是 public 的,不返回任何值 (void),並接受一個字串陣列作為引數。但是,它不是靜態的。
import java.util.Scanner; public class Sample{ public void main(String[] args){ System.out.println("This is a sample program"); } }
輸出
執行此程式時,會生成以下錯誤 -
Error: Main method is not static in class Sample, please define the main method as:public static void main(String[] args)
廣告