1. 程式人生 > >Java面試筆試-003-public static void main(String[] args)

Java面試筆試-003-public static void main(String[] args)

微信公眾號:JavaWeb架構師

描述

1)public

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

2)static

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

3)void

void表明方法沒有返回值。

4)main

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

5)String[] args

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

6)例項

因為main是程式的入口方法,所以當程式執行時,第一個執行的方法就是main()方法。 通常來講,要執行一個類的方法,先必須例項化這個類的物件,然後通過物件來呼叫這個方 法。但由於main是程式的入口方法,此時還沒有例項化物件,因此在編寫main()方法時就要求不需要例項化物件就可以呼叫這個方法,鑑於此,main()方法需要被定義成public與static。 下例給出了在呼叫main()方法時傳遞引數的方法。

public class Test {
    public
static void main(String[] args) { for (int i = 0; i < args.length; i++) { System.out.println(args[i]); } } }

使用javac Test.java指令編譯上述程式,使用java Test arg1 arg2 arg3指令執行程式,結果是:
arg1
arg2
arg3

7)引申
一、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

常見面試題

Java程式中程式執行入口方法main的簽名正確的有()。
A.public static void main(String[] args)
B.public static final void main(String[] args)
C.static public void main(String[] args)
D.static public synchronized void main(String[] args)
E.static public abstract void main(String[] args)

答案:A、B、C、D。見上面講解。

其它

原始碼下載:

關注下方微信公眾號,
回覆:
JavaMB.code

完整教程PDF版本下載