
現在、独学にてjavaを学んでいます。
以下の==演算子を使用したコードの実行結果を選択する問題が出題されたのですが、実行結果の一部が理解できません。
大変お手数ですが、以下のコードについて解説をお願いできますでしょうか。
class Test { public static void main(String[] args) { Test t1 = new Test(10, "100") ; Test t2 = t1; Test t3 = new Test(10, "100"); System.out.print((t1.getNo() == t3.getNo()) + " : "); System.out.print((t2.getId() == t3.getId()) + " : "); System.out.print(t1 == t3); } private int no; private String id; public Test(int n, String i) { no = n; id = i; } public int getNo() { return no; } public String getId() { return id; } }
上記コードのSystem.out.print((t1.getNo() == t3.getNo()) + " : ");
ではint型データのため「同じ数値かどうか」を比較し 「true」 が出力され、
System.out.print((t2.getId() == t3.getId()) + " : ");
ではString型データのため「同じ参照情報を持っているか」を比較し 「false」 が出力され、
System.out.print(t1 == t3);
ではTest型データのため、String型データと同様に「同じ参照情報を持っているか」を比較し 「false」 が出力されると考えました。
(実行結果はtrue : false : false であると考えました。)
ですが、解答では
true : true : false
と出力される。と記載されており、どうやっても理解ができませんでした。
上記につきまして、初歩的な質問で申し訳ございませんが、どのように理解をするべきなのか、どこで解釈が間違っているのかを解説していただけないでしょうか。
何卒よろしくお願いいたします。

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/08 04:32