為什麼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
- Java的Void方法是反模式的? - DZoneJava模式
- 為什麼說 Java 程式設計師必須掌握 Spring Boot ?Java程式設計師Spring Boot
- 陣列宣告為public final static缺陷陣列
- 為什麼必須使用三次握手?
- 為什麼重寫equals必須重寫hashCode
- 為什麼必須防止供應鏈攻擊?
- 為什麼GC(垃圾回收)必須stop-the-world?GC
- 為什麼用「void 0」代替「undefined」Undefined
- 為什麼說 Java 程式設計師到了必須掌握 Spring Boot 的時候?Java程式設計師Spring Boot
- 測試人員為什麼必須要會 LinuxLinux
- 什麼是字串?Python中字串必須加引號嗎?字串Python
- 為什麼採購和財務必須良好協作?
- 款項為什麼必須走財務審批流程
- 女人為什麼必須學習會家庭財富管理?
- python中的name等於main是什麼PythonAI
- C中int main()必須reture一個值嗎AI
- Java - 25 main方法JavaAI
- 為什麼類只能用public修飾?
- Java是什麼_Java是做什麼的?Java
- 為什麼現代企業的ERP系統必須具備CRM?
- 降本增效——券商們為什麼必須佈局小程式?
- python呼叫方法必須例項化麼Python
- 為什麼在 React 應用中使用動態匯入進行程式碼分割是必須的React行程
- MySQL 分割槽表,為什麼分割槽鍵必須是主鍵的一部分?MySql
- pytest.main () 為什麼會報錯?AI
- 為什麼實體店引流必須結合小程式發展
- iOS拾遺——為什麼必須在主執行緒操作UIiOS執行緒UI
- 為什麼實體店引流必須結合小程式發展?
- 為什麼開發人員必須要了解資料庫鎖?資料庫
- Android解惑之Handler為什麼需要是static的Android
- 24. 一個普通main方法的執行,是單執行緒模式還是多執行緒模式?為什麼?AI執行緒模式
- 超硬核的Java工程師分享,什麼是Java?為什麼我要做Java,我是如何學習Java的?Java工程師
- SAP Marketing Cloud裡的contact main facet是什麼意思CloudAI
- NSObject +(void)load 和+(void)initialize 方法的理解Object
- __name__ == '__main__' 到底是什麼意思AI
- 什麼是java?為什麼大家都學習java技術?Java
- 什麼是實名域名?域名必須進行實名認證嗎?