2017-06-23 37 views
2

main()方法是所有java程序的起點。所有預定義方法被聲明/在某些類中定義像的println()方法在的PrintStream類 現在WHERE主()方法聲明/定義定義?它不存在於Object類中,我認爲它是。 或者,main()方法是用戶定義的方法。如果是這樣,爲什麼我們不能說不是java中預定義或用戶定義的主要(String [] args)方法

public static void main(int args){} 

public void main(String args){} 

請人解釋, 在此先感謝。

+2

主要方法是在你編譯/運行的類 –

+2

中定義的這個看起來像一個分鐘前發佈的問題......也許是週末某處的作業..... –

+1

你可以完美的定義這兩種方法。它們不是Java程序的有效入口點,因爲Java需要一個名爲main的靜態方法,返回void,並將一個String數組作爲參數。 –

回答

1

可以說:

public void main(String args){} 

這只是你的程序將無法運行,但它確實編譯

main方法看起來像是一見鍾情,不是嗎?

它看起來像用戶定義的方法(它是)。但所有的節目從這裏開始。

這裏的訣竅是java。當你運行你的程序時,你需要這樣的命令,對吧?

java MyClass 

緊接着,Java的找到.class文件名爲MyClass並且發現在該文件名爲MyClass類。然後它會自動尋找main方法的確切簽名:

然後Java調用它。如果您以任何其他方式聲明,則Java無法找到它。

請注意,這不是一種語言功能。 JLS根本沒有提到這一點。這只是如何設計java命令。

+0

你是對的,但我的實際問題是它是預定義或用戶定義的方法。 – Srinu

+0

這是用戶定義的。也許我還不夠清楚,但我的第一句話是說你可以另闢蹊徑。該程序仍然編譯,但它不會運行。我有點暗示它是由你定義的。抱歉! @Srinu – Sweeper

1

僅僅因爲java程序(即Windows上的java.exe)被寫入使用public static void main(String[])作爲入口點。這不是該語言的基本特徵。一些其他程序完全有可能使用不同的方法作爲入口點。

相關問題