どちらも 等しい() メソッド そしてその == 演算子 Java で 2 つのオブジェクトを比較するために使用されます。
の Javaの文字列equals()メソッド 、2 つの文字列を比較し、両方の文字列のすべての文字が一致する場合は true を返し、そうでない場合は false を返します。
の == 演算子 ヒープ内のオブジェクトの参照またはメモリの位置を、オブジェクトが同じ位置を指しているかどうかに関係なく比較します。
演算子を使用してオブジェクトを作成するときは常に 新しい を作成すると、 新しい記憶の場所 そのオブジェクトに対して。したがって、== 演算子を使用して、2 つのオブジェクトのメモリ位置またはアドレスが同じかどうかを確認します。
一般に、equals() と == 演算子の両方は、 ジャワ はオブジェクトを比較して同等性を確認するために使用されますが、この 2 つの違いの一部を次に示します。
- の主な違いは、 .equals() メソッド そして == オペレーター それは、1 つはメソッドであり、もう 1 つは演算子であるということです。
- 参照比較には == 演算子を使用できます ( アドレス比較 ) および .equals() メソッド 内容比較 。簡単に言うと、== は両方のオブジェクトが同じメモリ位置を指しているかどうかをチェックするのに対し、.equals() はオブジェクト内の値の比較を評価します。
- クラスがそうでない場合 等号メソッドをオーバーライドする の場合、デフォルトで、このメソッドをオーバーライドした最も近い親クラスの equals(Object o) メソッドが使用されます。 **見る なぜequals(Object)とhashCode()メソッドをオーバーライドするのでしょうか? 詳細に。
例:
Java の Stringquals() メソッドと == 演算子。
ジャワ
夕食と夕食の違い
// Java program to understand> // the concept of == operator> public> class> Test {> >public> static> void> main(String[] args)> >{> >String s1 =>'HELLO'>;> >String s2 =>'HELLO'>;> >String s3 =>new> String(>'HELLO'>);> >System.out.println(s1 == s2);>// true> >System.out.println(s1 == s3);>// false> >System.out.println(s1.equals(s2));>// true> >System.out.println(s1.equals(s3));>// true> >}> }> |
>
>出力
true false true true>
説明: ここでは、s1 と s2 という 2 つのオブジェクトを作成します。
- s1 と s2 は両方とも同じオブジェクトを参照します。
- s1 と s2 の比較に == 演算子を使用すると、両方のアドレスが同じであるため、結果は true になります。 弦 一定のプール。
- 等号を使用すると、s1 と s2 で指定された値のみを比較しているため、結果は true になります。
Java文字列プール
| s1 = こんにちは |
| s2 = こんにちは |
Java ヒープ
| s3 = こんにちは |
両方の演算子を詳しく理解してみましょう。
等価演算子(==)
ブール型を含むすべてのプリミティブ型に等価演算子を適用できます。オブジェクト型に等価演算子を適用することもできます。
例:
Java の == 演算子。
ジャワ
開発者モードをオフにする
// Java program to illustrate> // == operator for compatible data> // types> class> Test {> >public> static> void> main(String[] args)> >{> >// integer-type> >System.out.println(>10> ==>20>);> >// char-type> >System.out.println(>'a'> ==>'b'>);> >// char and double type> >System.out.println(>'a'> ==>97.0>);> >// boolean type> >System.out.println(>true> ==>true>);> >}> }> |
>
>出力
false false true true>
オブジェクトタイプに == を適用すると、 引数の型間の互換性がある必要があります (子から親、親から子、または同じタイプのいずれか)。そうしないと、コンパイル時エラーが発生します。
例:
ジャワ
// Java program to illustrate> // == operator for incompatible data types> class> Test {> >public> static> void> main(String[] args)> >{> >Thread t =>new> Thread();> >Object o =>new> Object();> >String s =>new> String(>'GEEKS'>);> >System.out.println(t == o);> >System.out.println(o == s);> >// Uncomment to see error> >System.out.println(t==s);> >}> }> |
>
>
出力:
false false // error: incomparable types: Thread and String>
Java String等しい()メソッド
Javaでは、 文字列のequals()メソッド 文字列のデータ/内容に基づいて、指定された 2 つの文字列を比較します。両方の文字列の内容がすべて同じである場合、 trueを返します 。すべての文字が一致しない場合は、 falseを返します 。
構文:
構文 : public booleanquals(Object anotherObject)
パラメータ :
彼らは歌手です
- 別のオブジェクト- 比較する文字列
戻り値:
- ブール値 :
- 真実- 文字列が等しい場合
- 間違い- 文字列が等しくない場合
例:
Javaの文字列equals()メソッド
ジャワ
public> class> Test {> >public> static> void> main(String[] args)> >{> >Thread t1 =>new> Thread();> >Thread t2 =>new> Thread();> >Thread t3 = t1;> >String s1 =>new> String(>'GEEKS'>);> >String s2 =>new> String(>'GEEKS'>);> >System.out.println(t1 == t3);> >System.out.println(t1 == t2);> >System.out.println(s1 == s2);> >System.out.println(t1.equals(t2));> >System.out.println(s1.equals(s2));> >}> }> |
>
>
出力:
true false false false true>
説明: ここでは、.equals メソッドを使用して、2 つのオブジェクトに同じデータが含まれているかどうかを確認しています。
- 上の例では、3 つの Thread オブジェクトと 2 つの String オブジェクトを作成します。
- 最初の比較では、t1 == t3 かどうかを確認します。私たちが知っているように、両方とも t1 と t3 は、 同じオブジェクト 。そのため、true が返されます。
- 2 番目の比較では、オブジェクトの内容ではなく、文字列オブジェクトを比較するために演算子 == を使用しています。ここでは、両方のオブジェクトが異なるため、この比較の結果は False になります。
- equals() 演算子で 2 つの String オブジェクトを比較する場合、両方のオブジェクトに同じデータが含まれているかどうかを確認します。
- 両方のオブジェクトには同じ文字列、つまり GEEKS が含まれています。そのため、true が返されます。
こちらもお読みください:
- Java の Character.equals() メソッドと例
- ==、equals()、compareTo()、equalsIgnoreCase()、compare()
結論
Java stringquals() メソッドと == 演算子は両方とも、Java で文字列を比較するために使用されます。このチュートリアルでは、Java の ==operator および Stringquals() メソッドを例を挙げて説明しました。
Read More String Methods in Java>
== メソッドと .equals() メソッドの違い - FAQ
1. str1 == str2 と str1 == str2 の違いは何ですか?
Java では、str1 と str2 が同じ内容の文字列の場合、str1==str2 は true を返します。これは、同じ内容の文字列が同じ場所に格納されるためです。
str1.equals(str2) は、str1 と str2 が異なる文字列オブジェクトであるが、内容が同じである場合に true を返します。
2. 文字列比較における == と等しいの違いは何ですか?
の 文字列equals()メソッド 2 つの文字列を比較し、両方の文字列のすべての文字が一致する場合は true を返し、そうでない場合は false を返します。
== 演算子は、ヒープ内のオブジェクトの参照またはメモリの場所を、オブジェクトが同じ場所を指しているかどうかに関係なく比較します。
3.equals()メソッドのルールは何ですか?
- 反射性: 任意のオブジェクト x に対して、x.equals(x) は常に true を返す必要があります。
- 対称 : x.equals(y) が true を返す場合、y.equals(x) も true を返す必要があります。
- 推移性 : x.equals(y) と y.equals(z) が両方とも true の場合、x.equals(z) も true でなければなりません。
- 一貫性 : x.equals(y) を複数回呼び出しても、同じ結果が返されるはずです。
- 非ヌル: equals() メソッドは、null と比較した場合に true を返してはなりません。