爲何java的main方法必須是靜態的

 

Main方法是咱們學習Java編程語言時知道的第一個方法,你是否曾經想過爲何main方法是public、static、void的。固然,不少人首先學的是C和C++,可是在Java中main方法與前者有些細微的不一樣,它不會返回任何值,爲何main方式是public、static、void,這篇文章嘗試去找到一些答案。java

Main方法是Java程序的入口,記住,咱們這裏不會討論Servlet、MIDlet和其餘任何容器管理的java程序,在java核心編程中,JVM會查找類中的public static void main(String[] args),若是找不到該方法就拋出錯誤NoSuchMethodError:main 程序終止。
Main方法必須嚴格遵循它的語法規則,方法簽名必須是public static void,參數是字符串數組類型,若是是Java1.5及之後的版本還可使用可變參數:編程

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) spa

由於main返回任何值對程序都沒任何意義,因此設計成void,意味着main不會有任何值返回線程

總結

    1. main方法必須聲明爲public、static、void,不然JVM無法運行程序
    2. 若是JVM找不到main方法就拋出NoSuchMethodError:main異常,例如:若是你運行命令:java HelloWrold,JVM就會在HelloWorld.class文件中搜索public static void main (String[] args) 放法
    3. main方式是程序的入口,程序執行的開始處。
    4. main方法被一個特定的線程」main」運行,程序會一直運行直到main線程結束或者non-daemon線程終止。
    5. 當你看到「Exception in Thread main」如:Excpetion in Thread main:Java.lang.NullPointedException ,意味着異常來自於main線程
    6. 你能夠聲明main方法使用java1.5的可變參數的方式如:
      public  static void main(String... args)
    7. 除了static、void、和public,你可使用final,synchronized、和strictfp修飾符在main方法的簽名中,如:
      public  strictfp final  synchronized static  void main(String[] args)
    8. main方法在Java能夠像其餘方法同樣被重載,可是JVM只會調用上面這種簽名規範的main方法。
    9. 你可使用throws子句在方法簽名中,能夠拋出任何checked和unchecked異常
    10. 靜態初始化塊在JVM調用main方法前被執行,它們在類被JVM加載到內存的時候就被執行了。
相關文章
相關標籤/搜索