「任何人都可以解釋我執行流程的下列java代碼??」 對不起,我誤導性陳述......我的問題是...解釋下列java程序的執行流程
Main b = new Main();
控制進入A類建築工,那麼控制直接轉到類主要的覆蓋方法
public void PrintFields() {
System.out.println("x = "+x+" y = "+y);
}
爲什麼編譯不會給出錯誤,因爲x和y不會被創建.. !!我只對此感到困惑。
什麼時候x和y會在內存中創建並且它的初始化發生?是當控制達到Main
類中的以下語句時創建的x和y?
int x = 1;
int y;
代碼:
class A
{
public A() {
PrintFields();
}
public void PrintFields() {}
}
class Main extends A
{
int x = 1;
int y;
public Main() {
y = -1;
PrintFields();
}
public void PrintFields() {
System.out.println("x = "+x+" y = "+y);
}
}
class Test
{
public static void main(String[] args) {
Main b = new Main();
}
}
輸出:
run:
x = 0 y = 0 //why 0 0 ?
x = 1 y = -1 // why 1 -1 ?
BUILD SUCCESSFUL (total time: 0 seconds)
謝謝。
有這個東西叫做調試...... – 2012-03-15 06:08:33
請不下來..投票不告訴你的問題.. – hardik 2012-03-15 06:08:52
Hardik這個論壇來回答你解決不了的問題,簡單地提到使用調試器或做sysouts和你會了解這個流程。 – 2012-03-15 06:15:06