【java】 HelloWorld程序的執行流程

詳細分析從編譯到執行到輸出結果的過程:

public class HelloWorld {
    public static void main(String[] args)
    {    
            String  s ;
              s = “Hello World!”;  //定義字符串s
          System.out.println(s); 
    }
}

HelloWorld的具體執行過程:

1 先通過編譯器(javac)編譯HelloWorld.java文件,找到主類HelloWorld裏面有多少個類(多個類中只有一個類可以被public修飾)就編譯成多少個.class字節碼文件

2.然後通過虛擬機(JVM)解釋含有主函數的.class文件(HelloWorld.class)。通過main()方法獲得程序的入口,此時通過三個允許(static靜態綁定類,用public確定方法,再用void確定不處理返回值)纔可以進入並執行該程序。

3.主方法在內存的棧區的開闢工作空間,開始main方法的時候會到標準類庫調用String[] ,String , System標準字節輸入輸出流,Object等這幾個類的字節碼文件加載到方法區的類代碼段中。

4.在堆區創建一個空(String[ ])數組對象從棧區把args傳過來到堆的空數組對象String[ ]中。

5.因爲String s 是成員變量所以在主方法的工作區間創建String類型的 s 變量。

6.定義了一個”Hello world !”常量對象存放在方法區的常量值數據區並且會創建相應的toString()方法,棧區的s變量指向了 這個方法區的常量。

7.最後執行輸出語句輸出其實是s的地址,但是s指向(存儲)的是“Hello world !”常對象的地址,而且該常對象覆蓋重寫了父類的toString()方法,所以最後輸出的結果是:Hello world !

PS: 虛擬機調用主方法時會創建三個默認對象:System.out(標準字節輸出流對象)、System.in(標準字節輸入流對象)和System.error(標準字節出錯流對象).

以上共涉及:

1個java文件:HelloWorld.java

4個class類: HelloWorld.class、String[].class、String.class、System.class

5個對象: “Hello World!”、String[]、System.out、System.in、System.error

2個變量:args、s

3個方法:main()、toString()、println()

![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20190727203714462.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNTc0NTcx,size_16,color_FFFF

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章