==とequalsメソッドの違いは何ですか?
(一つのことを別々に明確に説明し、もう一方を明確に説明します。そうすれば、自然に違いが出てきます。それらを混ぜると、明確に説明するのは難しい)
= = 演算子は、2 つの変数の値が等しいかどうか、つまり、変数に対応するメモリに格納されている値が同じかどうかを比較するために特別に使用されます。 2 つの基本的なデータ型または 2 つの参照変数が等しいかどうかを比較します。 == 演算子を使用できます。
変数が指すデータがオブジェクト型の場合、オブジェクト自体が 2 つのメモリを占有します。 Objet obj = newObject(); のように、変数も 1 つのメモリ (ヒープ メモリ) を占有します。 変数 obj はメモリであり、new Object() は別のメモリです。変数 obj に対応するメモリに格納されているのは、オブジェクト タイプを指す変数の場合、2 つの変数が同じオブジェクトを指しているかどうかを比較する場合、つまり、オブジェクトが占有しているメモリの最初のアドレスです。 2 つの変数に対応するメモリ内の値が等しい場合、比較には == 演算子を使用する必要があります。2 つの独立したオブジェクトの内容が同じかどうかを比較するには、
メソッドが使用されます。たとえば、次のコードの場合、2 人の人物が同じ外観であるかどうかを比較します。
String a=new String("foo");
2 つの新しいステートメントは 2 つのオブジェクトを作成し、2 つの変数 a/b を使用してそれぞれオブジェクトの 1 つを指します。これらは 2 つの異なるオブジェクトです。つまり、最初のアドレスが異なります。 a と b は異なるため、式 a==b は false を返し、2 つのオブジェクトの内容は同じであるため、式 a.equals (b) は true を返します
実際の開発では、次のことがよくあります。たとえば、渡された文字列の内容が等しいかどうかを比較するには、String input = ...;input.equals("quit") を使用しますが、比較に == を使用するのは間違いです。インターネット上のいくつかの実践的な教育ビデオを見ると、そのようなエラーがたくさん見つかります。文字列の比較では基本的に、equals メソッドが使用されます。
クラスが独自の equals メソッドを定義していない場合、そのクラスはオブジェクトの equals メソッドを継承します。 Object クラスの equals メソッドの実装コードは次のとおりです: booleanquals(Object o){return this==o;} これは、クラスが独自に定義していない場合を示します。デフォルトのequalsメソッド(Objectクラスから継承)では、==演算子が使用されます。これは、2つの変数が指すオブジェクトが同じオブジェクトであるかどうかも比較します。このとき、equalsを使用すると同じ結果が得られます。結果は == を使用したものとして返され、2 つの独立したオブジェクトが比較される場合は常に false を返します。作成したクラスで、そのクラスによって作成された 2 つのインスタンス オブジェクトの内容が同じかどうかを比較できるようにしたい場合は、equals メソッドをオーバーライドして独自のコードを作成し、どのような状況で 2 つのオブジェクトの内容が同じであるかを判断する必要があります。同じものとみなされます。 ------------------------------------------------ ------------------簡単に言うと、== は 2 人の人間が本当に同じ人間であるかどうかを比較するもので、一般に 2 人の人間が論理的に等しいかどうかを比較するために使用されます (例:条件 (2 人の身長が大人と同じであれば、同じになります、など)、equals メソッドをオーバーライドしない場合、デフォルトでは引き続き 2 人の身長が同じかどうかを比較します。同じ人です(ナンセンス、両方の人はまだ胎児の状態にあり、特定の特徴もありません、どうやって論理的に比較できるのでしょうか)。Java の == と等しいの違い、簡単な説明については、PHP 中国語 Web サイトの関連記事に注目してください。