1. 程式人生 > 其它 >java面試:關於public static void main(String[] args)是什麼意思?

java面試:關於public static void main(String[] args)是什麼意思?

它是作為JAVA中的主函式,所有java程式的執行起點就是這個方法,除了args這個名字可以不一樣外,其他必須是這樣。

主函式的一般寫法如下:

public static void main(String[] args){…}

1)public

public是許可權修飾符,表明任何類或物件都可以訪問這個方法。

2)static

static表明main()方法是一個靜態方法,即方法中的程式碼是儲存在靜態儲存區的,只要類被載入後,就可以使用該方法而不需要通過例項化物件來訪問,可以直接通過類名.main()直接訪問,JVM在啟動時就是按照上述方法的簽名(必須有public與static修飾,返回值為void,且方法的引數為字元中陣列)來查詢方法的入口地址,若能找到,就執行;找不到,則會報錯。

3)void

void表明方法沒有返回值。

4)main

main是JVM識別的特殊方法名,是程式的入口方法。

5)String[] args

字串陣列引數args為幵發人員在命令列狀態下與程式互動提供了一種手段。

 

引申
一、main方法是否還可以有其它的定義形式?

1.由於static與public沒有先後關係,所以下面的寫法也是可以的:
static public void main(String[] args)

2.也可以把main方法定義為final:
public static final void main(String[] args)

3.也可以使用synchronized關鍵字來修飾main方法:
static public synchronized void main(String[] args)

不管哪種定義方式,都必須保證方法名是main,返回值是void,許可權是public,必須是static型別的。同時由於main方法是程式的入口方法,所以不能使用abstract修飾。

二、同一個.java檔案是否可以有多個main方法?

雖然每個類中都可以定義main方法,但是隻有與檔名相同的並且用public修飾的class的main方法才能作為整個程式的入口方法。
如,建立一個Test.java檔案,其中內容如下:

public class Test {
public static void main(String[] args) {
System.out.println("public class Test");
}
}

class Show {
public static void main(String[] args) {
System.out.println("class Show");
}
}

執行結果是:
public class Test