java初心者です。
等値(==)と等価(equals)について勉強中です。
ソースコード
下記ソースコードを実行すると等値(==)と等価(equals)部分がそれぞれ「false」、「true」でした。
equalsメソッドのオーバーライドはしていません。
public class Main { public static void main(String[] args) { String s1 = new String("aa"); String s2 = new String("aa"); System.out.println(s1 == s2); //false System.out.println(s1.equals(s2)); //true } }
しかし、下記に抜き出した「スッキリわかるJava入門」という書籍のequalsメソッドの中身についての記述を見ると、「this == o」のように等値判定が行われています。
public boolean equals(Object o) { if (this == o) { return true; } //等値判定 else { return false; } }
にもかかわらず、一番上のソースコードのequalsメソッド部分の判定がtrueになる理由が分かりません。
心当たりのある方がいれば教えていただきたいです。
過去質問に似たようなものがあったと思います。
探してみてください。
(基本Objectの比較はequals()という認識は合ってます)