本篇部落格主要介紹如何用Eclipse除錯簡單的JAVA程式。
1、如下圖,一個簡單的JAVA程式
2、設定斷點。 方法:選中需設定斷點的行程式碼,按快捷鍵Ctrl+Shift+B,設定斷點;
斷點設定成功該行會變成綠色。如上圖。
3、進入除錯頁面。點選爬蟲圖示進入除錯頁面。
4、下圖左側圖示為Step Into, 中間圖示為Step Over,右側的為Step Return;
- Step Into:單步執行,遇到子函式就進入並且繼續單步執行。
- Step Over:在單步執行時,在函式內遇到子函式時不會進入子函式內單步執行,而是將子函式整個執行完再停止,也就是把子函式整個作為一步。
- Step Return:返回上一步執行過程。
(注:對除錯操作理解尚淺,如有錯誤,歡迎指出。)
5、接下來用Step Into(單步執行)進行除錯。下圖為各變數及其值。(除錯過程中值會變化)
this.x, this.y, this.z 為當前物件的屬性x,y,z;初值均為0;
灰色的x,y,z表示形參,傳遞的引數分別為2,3,5;
6、點選Step Into,綠色游標移到第12行,即程式在執行第12行。
分析除錯是否正確:首先程式從19行開始執行,建立了一個AddClass類的物件class1;
呼叫的建構函式引數為三個,故進入下圖所示建構函式。
7、繼續進行單步執行,游標從第12行進入第8行。此時this.x, this.y, this.z的值依然為0。
8、繼續進行Step Into,游標進入第4行;注意,此時程式不進入下圖的建構函式,而是轉向第3行載入屬性。
9、載入完屬性後,程式進入第5行。
10、第5行執行完畢後,綠色游標轉入第9行;
注意:此時,this.x=2, this.y和this.z依然為0。
11、第9行執行完畢後,此時this.y也被賦值為3;
12、之後程式進入13行,對this.z進行賦值。this.z的值為5。
13、到這裡就完成了對class1物件的初始化;class2,class3物件的初始化過程與class1一樣,這裡不再重複。
上述例項的JAVA原始碼:
public class AddClass { public int x=0, y=0, z=0; public AddClass(int x) { this.x=x; } public AddClass(int x, int y){ this(x); this.y=y; } public AddClass(int x, int y, int z){ this(x,y); this.z=z; } public int add() { return x+y+z; } public static void main(String[] args) { AddClass class1=new AddClass(2, 3, 5); AddClass class2=new AddClass(10, 20); AddClass class3=new AddClass(1); System.out.println("x+y+z="+class1.add()); System.out.println("x+y="+class2.add()); System.out.println("x="+class3.add()); } }
以上只是介紹物件初始化過程中程式具體的執行情況,並沒有介紹add方法的呼叫過程。本篇部落格主要目的是讓小白(本人)學會簡單除錯,故add方法的
具體呼叫並沒有給出。
如果文章中有錯誤的地方,歡迎留言。