Given the code fragment: (特定的一個程式代碼片段:)
public class Test {
static int count = 0;
int i = 0;
public void changeCount() {
while (i < 5) {
++i;
count++;
}
}
public static void main(String[] args) {
Test check1 = new Test();
Test check2 = new Test();
check1.changeCount();
check2.changeCount();
System.out.println(check1.count + " : " + check2.count);
}
}
What is the result? (結果是什麼?)
A.
10 : 10
B.
5 : 5
C.
5 : 10
D. Compilation fails (編譯失敗)
【題目解析】
「count」是類別(靜態)變數,就算Test類別被實體化成許多個物件,用來儲存「count」的記憶體空間也都還是一開始的那個。
check1和check2物件分別執行一次「changeCount」方法,將Test類別的「i」類別變數從0開始,
因為count為static靜態變數,是test所擁有的,所以check1執行了5次,check2也執行了5次,所以 加1總共加了10次,
所以最後「count」類別變數儲存的值為10,輸出「10 : 10」。
public class Test { //Test檔案名稱。
static int count = 0; 宣告迴圈變數count。
int i = 0;// 宣告迴圈變數i。
public void changeCount() { //changeCount是一個方法名稱。
while (i < 5) { // 當i值大於5即停止執行的while迴圈。
++i; //++i的意思是先執行i=i+1。
count++; //count++的意思是先賦值(指定)運算,再執行count=count+1 的動作。
}
}
public static void main(String[] args) {
Test check1 = new Test();
Test check2 = new Test();
check1.changeCount();
check2.changeCount();
System.out.println(check1.count + " : " + check2.count);
}
}
【補充說明】
1、public:修飾子,用來宣告類別或方法為公開存取。
2、class:用來宣告類別。
3、static:用來宣告為靜態方法。
4、void:用來宣告方法沒有傳回值用的。
5、main:這是一個方法的名稱。
6、(String[] args):宣告方法的參數為字串陣列,參數名稱為args,args可以任意命名。
【參考資料】
1、Java SE8 OCAJP專業認證指南。
2、Oracle Java SE 8 Programmer I 官方教材。
3、網路上搜尋到的歷屆考古題。
【更新紀錄】
2019年06月24日
請先 登入 以發表留言。