what will be printed when you execute the following code?
class
c
}
class
a
a(string s)
}
class
test
extends
a
public
static
void
main(string args)
}
以上是乙個案列。開始的時候,我以為是輸出bb,但是答案卻是cbb,這讓我有點不理解.當執行到new test()這一條語句的時候,會去呼叫test類的
構造方法,test類中又呼叫了父類a的帶引數的構造方法,程式會轉到a類中執行a類的構造方法。開始我以為是順序原因,把c c =
new
c();這條語句
放到構造方法後面去執行。結果不變,所以不是這個原因,在執行a類的構造方法時,jvm 會編譯a類,然後載入進記憶體,執行的時候,執行的時候a類中有c類,所以還會把
c類也一起載入。所以結果會是這樣
Java 程式執行過程的記憶體分析
記憶體分析先知 棧 1 每個執行緒私有,不能實現執行緒間的共享!2 區域性變數放置於棧中。3 棧是由系統自動分配,速度快!棧是乙個連續的記憶體空間!堆 1 放置new出來的物件!2 堆是乙個不連續的記憶體空間,分配靈活,速度慢!方法區 1 被所有執行緒共享!2 用來存放程式中永遠不變或唯一的內容。類...
程式執行過程
要理解乙個程式的執行過程,首先要理解什麼是編譯器。我們用c語言寫的程式,計算機只能識別機器語言 二進位制指令 計算機並不能理解。因此,必須 將c語言轉換為機器語言。編譯器就是用來實現這一功能的。編譯器將源 檔案按照一定的對應規則映射程計算機能夠識別的二進位制指令 關於原始檔 目標檔案和可執行檔案 原...
程式執行過程
程式的執行過程大致分為以下四的步驟 1 預處理 2 編譯 3 彙編 4 鏈結 1.關於預處理 預處理階段的工作基本上是對源程式做 替代 主要有 巨集替換 條件編譯 標頭檔案展開 去除注釋 經過這番替換之後,就會生成乙個沒有巨集定義,沒有條件編譯 沒有特殊符號的輸出檔案。2.關於編譯 編譯階段的工作就...