為什么java的main方法必須是靜態的

為什么main方法是靜態的(static)

正因為main方法是靜態的,JVM調用這個方法就不需要創建任何包含這個main方法的實例。

因為C和C++同樣有類似的main方法作為程序執行的入口。

如果main方法不聲明為靜態的,JVM就必須創建main類的實例,因為構造器可以被重載,JVM就沒法確定調用哪個main方法。

靜態方法和靜態數據加載到內存就可以直接調用而不需要像實例方法一樣創建實例后才能調用,如果main方法是靜態的,那么它就會被加載到JVM上下文中成為可執行的方法。

為什么main方法是公有的(public)

Java指定了一些可訪問的修飾符如:private、protected、public,任何方法或變量都可以聲明為public,Java可以從該類之外的地方訪問。因為main方法是公共的,JVM就可以輕松的訪問執行它。

為什么main方法沒有返回值(Void)

因為main返回任何值對程序都沒任何意義,所以設計成void,意味著main不會有任何值返回

總結

main方法必須聲明為public、static、void,否則JVM沒法運行程序

如果JVM找不到main方法就拋出NoSuchMethodError:main異常,例如:如果你運行命令:java HelloWrold,JVM就會在HelloWorld.class文件中搜索public static void main (String[] args) 放法

main方式是程序的入口,程序執行的開始處。

main方法被一個特定的線程”main”運行,程序會一直運行直到main線程結束或者non-daemon線程終止。

當你看到“Exception in Thread main”如:Excpetion in Thread main:Java.lang.NullPointedException,意味著異常來自于main線程

你可以聲明main方法使用java1.5的可變參數的方式如:

publicstaticvoidmain(String... args)

除了static、void、和public,你可以使用final,synchronized、和strictfp修飾符在main方法的簽名中,如:

publicstrictfpfinalsynchronizedstaticvoidmain(String[] args)

main方法在Java可以像其他方法一樣被重載,但是JVM只會調用上面這種簽名規范的main方法。

你可以使用throws子句在方法簽名中,可以拋出任何checked和unchecked異常

靜態初始化塊在JVM調用main方法前被執行,它們在類被JVM加載到內存的時候就被執行了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,869評論 18 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,754評論 18 399
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,141評論 0 62
  • 心中的力量 只要心中有美,就會有精神力量。 我的心中是有美的??傆幸恍┤嗽诓粩嗟丶钪易呦虺晒?,她們就是我的信仰...
    心若鯤鵬閱讀 161評論 0 0
  • 花椒直播中,各種俊男靚女。你要什么類型的,它就有什么型的。最近小編在花椒直播中就發現一個萌妹子,萌得不要不要的...
    如花重名閱讀 725評論 0 0