Java と C# の ==
と Equals()
/equals()
の違いを詳しく調べます
プログラミングでは、値の比較において等価演算子が重要です。よくある質問は、==
演算子と Equals
または equals
メソッドの違いです。
Java および C# の参照型 (オブジェクト) の場合、==
演算子は 2 つの変数が同じオブジェクトを参照しているかどうか、つまり参照が等しいかどうかをチェックします。代わりに、Equals
または equals
は、Object
クラスで定義された仮想メソッドを呼び出します。このメソッドは通常、ID を検証しますが、特定の型によってオーバーライドされる可能性があるため、値の等価性チェックが実装されます。
Java 実装
Java では、==
は常に参照の同等性をチェックします。これは、2 つの参照が同じオブジェクトを指しているかどうかを判断することを意味します。 Java にはユーザー定義の演算子のオーバーロードがないため、動作は変わりません。
C# の柔軟性
C# はそれに比べて柔軟性が優れています。 ==
参照の等価性はデフォルトで強制されます。ただし、特定のコンパイル時型の変数 (文字列など) にオーバーロードが存在する場合、そのオーバーロードは実装されます。このオーバーロードは独自の動作を定義でき、通常は値の等価性を実装し、2 つの異なる参照が同じ値を持つことができます。
Equals
および equals
Java および C# では、a.Equals(b)
または a.equals(b)
は、Object
クラスから継承された仮想 Equals
または equals
メソッドを呼び出します。このメソッドはデフォルトで ID をチェックします。ただし、参照されるオブジェクトの実行時の型に応じて、特定の型でオーバーライドしてカスタム値の比較を有効にすることができます。
null 値の処理
null 参照で Equals
または equals
を使用しようとすると、NullReferenceException
または NullPointerException
が返されることに注意してください。
以上がJava と C# の `==` と `Equals()`/`equals()` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。