Javaのequalsついて質問があります。勉強始めたてです。
==は同一性、equalsはオーバーライドを前提とした同値性を調べるものと認識しています。
しかし、
String a1 = "abc";
String a2 = new String("abc");
System.out.println(a1 == a2); →false
System.out.println(a1.equals(a2); →true
といった実行結果になります。
equalsをオーバーライドしていないと同一性を確かめるメソッドだと思いますが、
なぜオーバーライドしていないのに a1.equals(a2)はtrueが返ってくるのでしょうか。
インスタンスを対象として同じ様なことをすると、
例えばnameというフィールドで同じ値を持った2つのインスタンスで調べても、
== でも equalsでも両方ともfalseと返ってきます。
Stringをequalsで比較する際には何か違いがあるのでしょうか。
回答1件
あなたの回答
tips
プレビュー