2012-03-02 24 views
-4

可能性の重複:
Equals method for objectsJavaで2つのオブジェクト/参照を比較する方法は?

私はコードの下に持っています。

public class SomeClass{ 
OtherClass clas = new OtherClass(); 
OtherClass some; 
some=this; 
if(some != this) { 
    s.y.s.o("true"); 
} 

私の質問は正しいですか?
いくつか!= thisまたはsome.equals(this)? equalsは、オブジェクトの平等を比較しながら、Javaの==

+0

'のSystem.out.println(一部=これ!);' ' のSystem.out.println(some.equals(この));' は何を得るを参照してください:) – ggrigery

+0

あなたのコードはコンパイルされません。 –

+2

初心者のためのコンパイルがいくつかあります。 'SomeClass'は' OtherClass'を拡張しないので、この例も有効ではありません。そして、赤い稚魚もあります(この例では 'clas'の目的は何ですか?)あなたの質問の内容にもっと力を入れてください。 –

答えて

3

あなたはsomeが同じであるかどうかを確認するために比較し、あなたの投稿で(そして、あなたが合うベースのメンバ変数を比較するために、それを上書きすることができます)

を参照(すなわちアドレス)を比較し、オブジェクトはthisです。これはあなたがしたいことですか?はい、その後some!=thisが正しい(とsomethisを参照しているのでfalseある)オブジェクト参照を比較するには

+0

こんにちは。私の要件はいくつかの両方であり、これは同じオブジェクトを参照していますか?この場合、いくつか!= thisとsome.equals(これ)は同じ結果を返しますか? – user1199334

+0

@ user1199334: 'some = this'を実行するので、' some'と 'this'は同じオブジェクトを参照します。もし両方が同じオブジェクトを参照するならば、あなたは何かを比較しているので 'some.equals(this)'は 'true'でなければならないことをもちろん理解しています...' some!= this'は 'すでに「何者か」に「this」を指定している。これは何?宿題? – Cratylus

17

場合equalsが値を比較するために使用されている間、あなたは、==!=使用しています。

7

次の2つのオブジェクトのアイデンティティをチェックしたいときに[彼らは実際に同じオブジェクトである場合]あなたは平等をチェックしたいときは、equals()を使用

operator!=またはoperator==を使用しています。 [equals()メソッドが定義されているので、2つのオブジェクトが等しい場合、]。

正確に何を達成しようとしているのか分かりにくいですが、通常はの2つの参照オブジェクトを比較すると、equals()を使用します。

2

==は参照を比較します。つまり、これらの2つのオブジェクトは同じ場所にあります。 .Equalsは、それらの参照が指すものを比較します。つまり、これらの2つのオブジェクトは同等です。

6

何を比較しますか?

==は、2つの参照が完全一致するオブジェクトであるかどうかを比較します。

equalsは、クラスのequals実装のクラス固有の基準に基づいて、2つの参照が一致するプロパティを持つオブジェクトかどうかを比較します。

+0

equalsメソッドのデフォルトの実装(Java.lang.Objectクラスで定義)は、オブジェクト参照を比較することです。オブジェクト内のequalsメソッドをオーバーライドする必要があります。それ以外の場合は、==演算子と同じ動作をします。 –

関連する問題