<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          面試官:為什么 Java 的 main 方法必須是 public static void?

          共 2708字,需瀏覽 6分鐘

           ·

          2020-10-11 15:54

          點(diǎn)擊“開(kāi)發(fā)者技術(shù)前線”,選擇“星標(biāo)?”

          在看|星標(biāo)|留言,? 真愛(ài)

          來(lái)源:suo.im/6v9d64

          Main 方法是我們學(xué)習(xí) Java 編程語(yǔ)言時(shí)知道的第一個(gè)方法,你是否曾經(jīng)想過(guò)為什么 main 方法是 public、static、void 的。當(dāng)然,很多人首先學(xué)的是 C 和 C++,但是在 Java 中 main 方法與前者有些細(xì)微的不同,它不會(huì)返回任何值,為什么 main 方式是 public、static、void,這篇文章嘗試去找到一些答案。

          Main 方法是 Java 程序的入口,記住,我們這里不會(huì)討論 Servlet、MIDlet 和其他任何容器管理的 java 程序,在 java 核心編程中,JVM 會(huì)查找類中的 public static void main(String[]args),如果找不到該方法就拋出錯(cuò)誤 NoSuchMethodError:main 程序終止。

          Main 方法必須嚴(yán)格遵循它的語(yǔ)法規(guī)則,方法簽名必須是 public static void,參數(shù)是字符串?dāng)?shù)組類型,如果是 Java1.5 及以后的版本還可以使用可變參數(shù):

          public?static?void?main(String... args)

          為什么 main 方法是靜態(tài)的(static)?

          1.正因?yàn)?main 方法是靜態(tài)的,JVM 調(diào)用這個(gè)方法就不需要?jiǎng)?chuàng)建任何包含這個(gè) main 方法的實(shí)例。

          2.因?yàn)?C 和 C++ 同樣有類似的 main 方法作為程序執(zhí)行的入口。

          3.如果 main 方法不聲明為靜態(tài)的,JVM 就必須創(chuàng)建 main 類的實(shí)例,因?yàn)闃?gòu)造器可以被重載,JVM 就沒(méi)法確定調(diào)用哪個(gè) main 方法。

          4.靜態(tài)方法和靜態(tài)數(shù)據(jù)加載到內(nèi)存就可以直接調(diào)用而不需要像實(shí)例方法一樣創(chuàng)建實(shí)例后才能調(diào)用,如果 main 方法是靜態(tài)的,那么它就會(huì)被加載到 JVM 上下文中成為可執(zhí)行的方法。

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

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

          為什么 main 方法沒(méi)有返回值(Void)?

          因?yàn)?main 返回任何值對(duì)程序都沒(méi)任何意義,所以設(shè)計(jì)成 void,意味著 main 不會(huì)有任何值返回。

          總結(jié)

          1.main 方法必須聲明為 public、static、void,否則 JVM 沒(méi)法運(yùn)行程序 。

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

          3.main 方式是程序的入口,程序執(zhí)行的開(kāi)始處。

          4.main 方法被一個(gè)特定的線程 ”main” 運(yùn)行,程序會(huì)一直運(yùn)行直到 main 線程結(jié)束或者 non-daemon 線程終止。

          5.當(dāng)你看到“Exception in Thread main”如:Excpetion in Thread main:Java.lang.NullPointedException,意味著異常來(lái)自于 main 線程。

          6.你可以聲明 main 方法使用 java1.5 的可變參數(shù)的方式如:publicstaticvoid main(String... args)。

          7.除了 static、void、和 public,你可以使用 final,synchronized、和 strictfp 修飾符在 main 方法的簽名中,如:publicstrictfpfinalsynchronizedstaticvoid main(String[] args)。

          8.main 方法在 Java 可以像其他方法一樣被重載,但是 JVM 只會(huì)調(diào)用上面這種簽名規(guī)范的 main 方法。

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

          10.靜態(tài)初始化塊在 JVM 調(diào)用 main 方法前被執(zhí)行,它們?cè)陬惐?JVM 加載到內(nèi)存的時(shí)候就被執(zhí)行了。



          最后這里再跟大家推薦個(gè) Linux 命令行教程:《The Linux Command Line》,中文譯名:《Linux 命令行大全》。

          該書(shū)作者出自自美國(guó)一名開(kāi)發(fā)者,兼知名 Linux 博客 LinuxCommand.org 創(chuàng)始人:William Shotts 之手。
          在很早以前,該書(shū)便基于 CC 3.0 許可免費(fèi)對(duì)外界開(kāi)放閱讀,發(fā)展到今天,已幫助無(wú)數(shù)開(kāi)發(fā)者習(xí)得并掌握 Linux 命令行的使用技巧。
          作者編著這本書(shū)的目的,主要是因?yàn)椋ㄟ^(guò)命令行跟計(jì)算機(jī)進(jìn)行交流溝通,是一種非常高效的方式,正像人類社會(huì)使用文字互通信息一樣。懂得如何跟計(jì)算機(jī)好好相處,是每個(gè)程序員的必經(jīng)之路。
          “圖形用戶界面讓簡(jiǎn)單的任務(wù)更容易完成, 而命令行界面使完成復(fù)雜的任務(wù)成為可能”,這句話到今天,仍然很正確。
          該書(shū)將教授你如何與命令行友好相處。讓你從本質(zhì)上了解命令行是怎樣工作的?能做什么?使用它的最好方法是什么?
          《Linux 命令行大全》共分為五部分,37 個(gè)章節(jié),每個(gè)章節(jié)會(huì)對(duì)應(yīng)一個(gè) Linux 知識(shí)點(diǎn)的講解。
          • 第一部分:命令行發(fā)展歷史

          • 第二部分:命令行的基本語(yǔ)言 Shell

          • 第三部分:熟悉 Linux 的環(huán)境配置與文件處理

          • 第四部分:命令行處理真實(shí)場(chǎng)景的任務(wù)

          • 第五部分:學(xué)習(xí) Shell 編程

          此外,對(duì)于其它如 Unix、macOS 等操作系統(tǒng),該書(shū)也會(huì)有所涉獵,但不會(huì)過(guò)于深入,畢竟其整體基調(diào),還是主要圍繞 Linux 展開(kāi)敘述的。
          如果你是一名 Linux 新手,那這個(gè)教程對(duì)你來(lái)說(shuō)再合適不過(guò)了,你可以輕松從這本教程里面,學(xué)到關(guān)于 Linux 文件操作、權(quán)限配置、進(jìn)程管理、歸檔備份、正則表達(dá)式、文本處理、Shell 腳本設(shè)計(jì)等一系列知識(shí)。
          英文原版、中文版及PDF以為大家整理好 !

          如何獲取?

          1. 識(shí)別并關(guān)注公眾號(hào)「下面的二維碼」;
          2. 在下面公眾號(hào)后臺(tái)回復(fù)關(guān)鍵字「命令行」。

          ?長(zhǎng)按上方二維碼?2 秒
          回復(fù)「命令行」即可獲取資料


          瀏覽 38
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  韩国啪啪免费视频 | 无码 高潮 在线白丝护士 | 成人在线免费视频观看 | 九色婷婷在线 | 中文人妻无码一区二区三区久久 |