Given:
public class TestField {
int x;
int y;
public void doStuff(int x, int y) {
this.x = x;
y = this.y;
}
public void display() {
System.out.print(x + " " + y + " : ");
}
public static void main(String[] args) {
TestField m1 = new TestField();
m1.x = 100;
m1.y = 200;
TestField m2 = new TestField();
m2.doStuff(m1.x, m1.y);
m1.display();
m2.display();
}
}
What is the result?
A.
100 200 : 100 200 :
B.
100 0 : 100 0 :
C.
100 200 : 100 0 :
D.
100 0 : 100 200 :
題解
先看到程式第8行,「doStuff」方法內並沒有將參數y的值指派給物件的y變數,因此「doStuff」方法只會更動物件的x變數。
第17~18行,直接去設定m1物件的x和y這兩個物件變數。設定完成後m1.x為100, m1.y為200。
第20行使用m2物件的「doStuff」方法只會更動到物件變數x,所以設定完成後m2.x為100, m2.y為0。
因此選項C是正確的。