Java學了這麼久,我們可以從「HelloWorld」中能知道到什麼?

我們在學習Java的時候(除了Java還有很多語言)都是以“HelloWorld”這幾個字符開始的,這是每個Java程序員都知道的程序。這很簡單,但簡單的開始可以深入理解更復雜的概念。在這篇文章中,我將探討從這個簡單的程序中可以學到什麼。以下面程序為例:

Java學了這麼久,我們可以從“HelloWorld”中能知道到什麼?

一,我們為什麼把“HelloWorld”當做第一堂課?

首先我們要搞清楚,為什麼各種編程第一堂課都要教這個,為什麼不直接開始學習實用內容呢?在Java中,Java程序是從類構建的,每個方法和字段都必須在類中。這是由於其面向對象的特性:一切都是一個對象,它是一個類的實例。面向對象的編程語言比函數式編程語言具有許多優點,例如更好的模塊化,可擴展性等。這也就是為什麼從最簡單的“HelloWorld”開始了。

Java學了這麼久,我們可以從“HelloWorld”中能知道到什麼?

二,為什麼總有“主要”方法?

“主要”方法是程序入口,它是靜態的。“static”表示該方法是其類的一部分,而不是對象的一部分。

這是為什麼?為什麼我們不把非靜態方法作為程序入口?

如果方法不是靜態的,則需要首先創建對象以使用該方法。因為必須在對象上調用該方法。對於入口目的,這是不現實的。沒有雞肉,我們不能得到一個雞蛋。因此,程序入口方法是靜態的。

參數“String [] args”表示可以將一個字符串數組發送到程序以幫助程序初始化。

Java學了這麼久,我們可以從“HelloWorld”中能知道到什麼?

三,如何在JVM中執行?

現在的問題是JVM如何加載類並調用main方法?

在執行main方法之前,JVM需要加載,鏈接,以及初始化類。

1)加載將類/接口的二進制形式帶入JVM。

2)鏈接將二進制類型數據合併到JVM的運行時狀態。鏈接包括3個步驟:驗證,準備和可選的解決方案。驗證確保類/接口在結構上是正確的; 準備涉及分配類/接口所需的內存; 分辨率解析符號引用。

3)初始化為類變量分配適當的初始值。

Java學了這麼久,我們可以從“HelloWorld”中能知道到什麼?

此加載作業由Java類加載器完成。啟動JVM時,使用三個類加載器:

  1. Bootstrap類加載器:加載位於中的核心Java庫 / jre / lib目錄。它是核心JVM的一部分,並使用本機代碼編寫。
  2. 擴展類加載器:加載擴展目錄中的代碼(例如, /jar/ lib / ext目錄)。
  3. 系統類加載器:加載在CLASSPATH上找到的代碼。

所以HelloWorld類由系統類加載器加載。執行main方法時,如果存在其他依賴類,它將觸發加載,鏈接和初始化。

最後,main()被推入JVM堆棧,並相應地設置程序計數器(PC)。PC然後指示將println()推送到JVM堆棧。當main()方法完成時,它將從堆棧彈出並執行完畢。

Java學了這麼久,我們可以從“HelloWorld”中能知道到什麼?


分享到:


相關文章: