HelloWorld.java是我們學習java的第一個程序,簡單的再也不能簡單了,可是里面的原理以及執行流程大家都知道嗎?最近在復習java知識,特地鑽研了一番分享給大家!
貼出HelloWorld的代碼如下:
public class HelloWorld { public static void main(String[] args) { String s ; s = “Hello World!”; //定義字符串s System.out.println(s); } }
分析內存圖:
HelloWorld的具體執行過程:
1.執行HelloWorld.java文件,生成HelloWorld.class字節碼文件;
2.虛擬機執行HelloWorld.class,將這個類加載到內存中(即方法區的類代碼區中);
3. 虛擬機通過類找到HelloWorld的主方法(程序的入口方法),訪問權限為public(公有可用),虛擬機傳遞String[](字符串數組對象:空數組)類型參數的地址到主方法的args中去,並在棧區為args開辟內存空間,返回一個void的返回值;
4.定義一個String(標准類庫中的)類型的變量(在棧區開辟空間)s,s的值不確定(垃圾值,編譯無法通過);
5. s = “Hello World!”,對象“Hello World!”在方法區的常量數據區開辟空間,屬性即為:Hello World!,方法即為:toString(),變量s存放對象“Hello World!”的地址;
6. 虛擬機找到標准類庫中的System.class類並加載到內存中(即方法區的類代碼區中),System.out為標准字節輸出流對象(),並調用println()方法將變量s的值打印到屏幕上。
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()