[Java]==とequals()の違い


==は、アドレス値の比較に使用する演算子です.
.equals()は、コンテンツ自体を比較する際に使用する方法です.

==演算子


==演算子は元のtypeの値を比較します.
reference typeの場合、アドレス値を比較します.
// primitive type
int a = 5;
int b = 5;
System.out.println(a == b); // true

// reference type
String s1 = "may";
String s2 = s1;
String s3 = "may"

System.out.println(s1 == s2); // true
System.out.println(s1 == s3); // false

.equals()メソッド


.equals()メソッドでは、Stringクラスで文字列の内容が同じ場合にtrueを返す必要があります.
equals()メソッドは、最上位オブジェクトクラスに含まれているため、すべてのサブクラスで再定義して使用できます.Stringクラスは、コンテンツが同時にtrueを返すように再定義されます.
String s1 = "may";
String s2 = "may";
System.out.println(s1==s2); // true
System.out.println(s1.equals(s2)); // true
Stringは、文字列を直接参照するときに同じアドレス値を持つことができます.s 1、s 2は同じです.String Constant Poolでは同じ文字列が直接参照されているからです.
String s3 = new String("may");
String s4 = new String("may");
System.out.println(s3 == s4) // false
System.out.println(s3.equals(s4)); // true
s 3、s 4は、オブジェクトが異なるアドレス値を有することを示すため、==falseであり、equals()はtrueであり、値が同じであるためである.