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是正確的。