以下オリジナルクラスについて比較結果です
java
1public class Sample { 2 3 int sample; 4 5 Sample(int sample) { 6 this.sample = sample; 7 8 } 9} 10 11public class Main { 12 13 public static void main(String[] args) { 14 // TODO 自動生成されたメソッド・スタブ 15 String hoge = "Hello"; 16 String fuga = "Hello"; 17 18 System.out.println(hoge == fuga);//1 true 19 System.out.println(hoge.equals(fuga));//2 true 20 21 Sample sample = new Sample(9) 22 Sample sample2 = new Sample(9); 23 24 System.out.println(sample == sample2);//3 flase 25 System.out.println(sample.equals(sample2));//4 flase 26 27 } 28 29}
まず私の認識についてあっているか教えていただきたいです。
「equals」による比較の結果は、オブジェクトに特段、equalsメソッドを記述していない場合は
単に右と左のオブジェクトが完全に一致していいるか比べるため4のような比較はfalseになる
まずこの認識自体はあっていますでしょうか。
上のような認識でいたため2、3と4の結果には納得できます。
しかしなぜ1もtrueになるのでしょうか。Stringはequalsで予め文字列が同じかで比較するというのが定義されていたかと思いますが、
その場合は「==」の評価判定も定義されている「equals」のそった評価をするのでしょうか。
確認に「hoge」と「fuga」の文字列を変更し別々のものにすると1と2共にfalseになりました。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。