0
0

(java silver) equals

Posted at

JavaSilverでメモしたところ備忘録として残しておこうと思います。

  • 勉強したては"equals"と"=="がごっちゃになってしまい分からなくなってしまいましたがstringクラスにおけるequalsはオーバラードされているということが分かってから理解が深まりました!

Javaの同一性・同値性

  • インスタンスは異なるが同じ値を持っている同値性

String str1 = new String("ABC");
String str2 = new String("ABC");

System.out.println(str1 == str2);
//falseと出力される
System.out.println(str.equals(str2));
//trueと出力される
  • 複数の変数が同じインスタンスを参照していることを同一性

String str1 = "ABC";
String str2 = str1;
String str3 = new String("ABC");
String str4 = "ABC";


System.out.println(str1 == str2);
//trueと出力される

System.out.println(str1 == str3);
//falseと出力される

System.out.println(str1 == str4);
//trueと出力される

equalsメソッドについて

  • objectクラスにあり、すべてのクラスに継承される

  • プリミティブ型においては同値性を見るため==が使われ、
    参照型では==equals()のどちらもインスタンス参照先の同一性を見る

  • objectクラスの場合は同一性を判別しnullはfalse

  • Strnigクラス内のequalsメソッドはobjectクラスのequalsメソッドをオーバーライドしていて同値性を判別しnullは実行時エラー

String str1 = "He";
String str2 = "He";

System.out.println(str1 == str2);

str1 += "llo";
str2 += "llo";

System.out.println(str1 == str2);

//実行結果

true
false

補足

  • 一般的に参照型では==を使わず判別を行ってもfalseになるが
    -128~127の間ではtrueが出てしまう
Integer a = 127;
Integer b = 127;

System.out.println(a == b);
//trueが出力される
Integer a = 128;
Integer b = 128;

System.out.println(a == b);
//falseが出力される
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0