0
Java クラスの参照に関する問題
以下コードの実行結果は、
false true
となります(Eclipseで確認済み)が、なぜ2回目のSystem.out.print(...)の実行結果がtrueとなるのかが
分かりません。
どなたかご教示いただけないでしょうか、よろしくお願いします。
(私の解釈を、コードの下に記載します。間違いを指摘してもらえると幸いです。)
public class testclass {
public static void main(String[] args){
testclass obj1 = new testclass();
testclass obj2 = new testclass();
System.out.print(obj1 == obj2);
obj2 = operate(obj1, obj2);
System.out.print(" " + (obj1 == obj2));
}
static testclass operate(testclass obj1, testclass obj2){
testclass obj3 = obj1;
obj1 = obj2;
return obj3;
}
}
私の解釈
コードの3、4行目でobj1, obj2オブジェクトが作成される。
obj1とobj2は別々のオブジェクトを指しているため、
5行目のSystem.out.printメソッドではfalseが返る。
6行目で、obj1とobj2をoperateメソッドに引数として渡し、
処理はoperateメソッド(9行目)に移る。
10行目で、
obj1変数の参照先をobj3変数に代入
11行目で、
obj2変数の参照先をobj1変数に代入
12行目で、
obj3変数の参照先を返す
つまり、6行目のobj2変数にobj1変数の参照先を代入
7行目
obj1の参照先は11行目でobj2になっている
obj2の参照先は12行目でobj1になっている
したがって、(obj1 == obj2)は false が返されると考えているのですが、
そうはなりませんでした。。。 trueが返ってきます。
なぜでしょうか?