為什麼Java的main方法必須是public static void?
Main 方法是我們學習 Java 程式語言時知道的第一個方法,你是否曾經想過為什麼 main 方法是 public、static、void 的。當然,很多人首先學的是 C 和 C++,但是在 Java 中 main 方法與前者有些細微的不同,它不會返回任何值,為什麼 main 方式是 public、static、void,這篇文章嘗試去找到一些答案。
public static void main(String... args)
# 為什麼 main 方法是靜態的(static)?
1、正因為 main 方法是靜態的,JVM 呼叫這個方法就不需要建立任何包含這個 main 方法的例項。
2、因為 C 和 C++ 同樣有類似的 main 方法作為程式執行的入口。
3、如果 main 方法不宣告為靜態的,JVM 就必須建立 main 類的例項,因為構造器可以被過載,JVM 就沒法確定呼叫哪個 main 方法。
4、靜態方法和靜態資料載入到記憶體就可以直接呼叫而不需要像例項方法一樣建立例項後才能呼叫,如果 main 方法是靜態的,那麼它就會被載入到 JVM 上下文中成為可執行的方法。
# 為什麼main方法是公有的(public) ?
Java 指定了一些可訪問的修飾符如:private、protected、public,任何方法或變數都可以宣告為 public,Java 可以從該類之外的地方訪問。因為 main 方法是公共的,JVM 就可以輕鬆的訪問執行它。
# 為什麼 main 方法沒有返回值(Void)?
因為 main 返回任何值對程式都沒任何意義,所以設計成 void,意味著 main 不會有任何值返回。
# 總結
public static void main(String... args)
public strictfp final synchronized static void main(String[] args)
10、靜態初始化塊在 JVM 呼叫 main 方法前被執行,它們在類被 JVM 載入到記憶體的時候就被執行了。
來源:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557372/viewspace-2675627/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 找不到 main 方法, 請將 main 方法定義為: public static void main(String[] args)AI
- Android 主執行緒之旅——PSVM(public static void main)Android執行緒AI
- Vue 元件data為什麼必須是函式?Vue元件函式
- Java中main()方法為什麼採用這個方法簽名JavaAI
- 谷歌為什麼必須迴歸中國谷歌
- public void sendHtmlHTML
- 為什麼說 Java 程式設計師必須掌握 Spring Boot ?Java程式設計師Spring Boot
- 為什麼GC(垃圾回收)必須stop-the-world?GC
- Java的Void方法是反模式的? - DZoneJava模式
- 陣列宣告為public final static缺陷陣列
- 為什麼重寫equals必須重寫hashCode
- 為什麼用「void 0」代替「undefined」Undefined
- 為什麼說 Java 程式設計師到了必須掌握 Spring Boot 的時候?Java程式設計師Spring Boot
- public void setModerationMinThreadValue(int value)thread
- 思考是必須的
- 款項為什麼必須走財務審批流程
- 測試人員為什麼必須要會 LinuxLinux
- 女人為什麼必須學習會家庭財富管理?
- Java是什麼_Java是做什麼的?Java
- 什麼是字串?Python中字串必須加引號嗎?字串Python
- 降本增效——券商們為什麼必須佈局小程式?
- 為什麼必須使用 Homestead 來開發 Laravel 應用?Laravel
- 為什麼objc_msgSend必須用匯編實現OBJGse
- python中的name等於main是什麼PythonAI
- MySQL 分割槽表,為什麼分割槽鍵必須是主鍵的一部分?MySql
- 為什麼實體店引流必須結合小程式發展
- iOS拾遺——為什麼必須在主執行緒操作UIiOS執行緒UI
- 為什麼開發人員必須要了解資料庫鎖?資料庫
- 為什麼前端初學者必須要明白髮布訂閱模式前端模式
- 為什麼實體店引流必須結合小程式發展?
- 為什麼學好計算機就必須學好彙編?計算機
- 什麼是java?為什麼大家都學習java技術?Java
- 為什麼現代企業的ERP系統必須具備CRM?
- 為什麼類中的執行緒函式必須要宣告靜態?執行緒函式
- 為什麼Java中繼承是有害的Java中繼繼承
- 24. 一個普通main方法的執行,是單執行緒模式還是多執行緒模式?為什麼?AI執行緒模式
- __name__ == '__main__' 到底是什麼意思AI
- 【Java面試】什麼是 ISR,為什麼需要引入 ISRJava面試