0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

==とequalsの違いは?

Posted at

==とequalsの違いは?

  1. ==equals の違いは、次のようになります

    == 演算子は、比較しているオブジェクトの参照が同じかどうかをチェックします。つまり、比較しているオブジェクトが同じオブジェクトであるかどうかをチェックします。 一方、 equals メソッドは、オブジェクトの内容が同じであるかどうかをチェックします。

  2. 例1

    String str1 = "Hello World";
    String str2 = "Hello World";
    
    boolean isEqual = str1.equals(str2);//true
    boolean isSameRef = (str1 == str2);//true
    

    これら 2 つの文字列オブジェクトがメモリ内の定数プールに格納され、実際には同じメモリ アドレスを指します。 これは、Java の文字列は不変オブジェクトであるため、同じ内容の複数の文字列オブジェクトを作成すると、それらはすべて定数プールに格納され、同じメモリ アドレスを指して、メモリ スペースの浪費を回避します。

    したがって、"=" 演算子を使用してこれら 2 つの文字列オブジェクトを比較すると、同じメモリ アドレスを指しているため、true が返されます。 equals() メソッドを使用してこれら 2 つの文字列オブジェクトを比較すると、同じ文字列コンテンツが格納されているため、true が返されます。

  3. 例2

    String str1 = new String("Hello");
    String str2 = new String("Hello");
    
    boolean isEqualUsingEquals = str1.equals(str2); // true
    boolean isEqualUsingOperator = (str1 == str2); // false
    

    この例では、str1 と str2 には同じ文字列コンテンツが含まれていますが、異なるメモリ アドレスを指しています。 Java では、new キーワードを使用して作成されたオブジェクトは、毎回メモリ内に新しいインスタンスを作成するためです。

    したがって、「=」演算子を使用してこれら 2 つの文字列オブジェクトを比較すると、異なるメモリ アドレスを指しているため、false が返されます。 equals() メソッドを使用してこれら 2 つの文字列オブジェクトを比較すると、同じ文字列コンテンツが含まれているため、true が返されます。

    4.まとめ

    これらの例は、「=」演算子が 2 つのオブジェクトの参照が同じかどうかを比較し、equals() メソッドが 2 つのオブジェクトに含まれる内容が等しいかどうかを比較することを示しています。 String 型のオブジェクトの場合、通常、「=」演算子を使用するのではなく、equals() メソッドを使用して、含まれている文字列が等しいかどうかを比較します。

0
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?