最初接觸Java程序的時候,老師就教導我們要從下面這句開始學起,據說是約定俗成的,所以直到今天,還是只知道java程序應該這么寫,具體為什么這么寫,鄙人慚愧。
1 public class ClassName{ 2 public static void main(String[] args){ 3 System.out.println("Hello Java"); 4 } 5 }
今天既然自己都這么慚愧了,那么就該是時候弄明白為什么java的主函數要按照這個格式來寫,從以下幾點來說明吧。
為什么使用public static修飾main()
Java中,main()方法是java應用程序的入口方法。java虛擬機通過main方法找到需要啟動的運行程序,並且檢查main函數所在類是否被java虛擬機裝載。如果沒有裝載,那么就裝載該類,並且裝載所有相關的其他類。因此程序在運行的時候,第一個執行的方法(注意是方法,而不是其他的,例如代碼塊)就是main()方法。通常情況下, 如果要運行一個類的方法,必須首先實例化出來這個類的一個對象,然后通過"對象名.方法名()"的方式來運行方法,但是因為main是程序的入口,這時候還沒有實例化對象,因此將main方法聲明為static的,這樣這個方法就可以直接通過“類名.方法名()”的方式來調用。
為什么使用void修飾main()
對於java中的main(),jvm有限制,不能有返回值,因此返回值類型為void。
關於參數String[] args的說明
main方法中還有一個輸入參數,類型為String[],這個也是java的規范,main()方法中必須有一個入參,類細必須String[],至於字符串數組的名字,這個是可以自己設定的,根據習慣,這個字符串數組的名字一般和sun java規范范例中mian參數名保持一致,取名為args。
main()方法可以 throws Exception
看到網上有說main()方法不能拋出異常,感覺有點疑惑,就親自試驗了一把,代碼如下,運行正常。
1 public class ArgumentsOfMain { 2 public static void main(String[] args) throws Exception{ 3 System.out.println("Hello World"); 4 throw new Exception("hello world"); 5 } 6 }
總結
通過對main()的修飾符合參數進行說明,總算對其所有了解,不至於一點都不懂所以然。不過還有點困惑,留在此處,希望大牛指教。問題是:代碼中的static代碼塊為什么先於main()函數被執行?
public class ArgumentsOfMain { static { System.out.println("Hello Wordld!"); } public static void main(String[] args){ System.out.println(args.length); } }