2012-01-01 1 views
-2

==object.equal(Object obj)の違いを次のように理解できますか? :object.equal(Object obj)戻り二つのオブジェクトのtrueかの値です"=="等しい "(オブジェクトobj)"

は同じです。 ==は、タイプの両方の場合、trueを返す一方、2つのオブジェクトの値は同じです。

+0

'=='は決して意味を変えることはできませんが、 'equals()'は意味を変えることができます。 –

答えて

5

==は、参照がまったく同じ場合はtrueを返します。

equals(Object)は、trueを返すようにメソッドが記述されたときにtrueを返します。これは、同じオブジェクト、同等のオブジェクト、または開発者が書くように感じたことがあります。あなたは、それは同じことを行い見ることができるように

デフォルトの実装は

public boolean equals(Object obj) { 
    return (this == obj); 
} 

として書かれています。

+0

私は、equals(Object obj)のデフォルト実装について質問しています –

+1

私はソースコードを読んでいたでしょうが、それほど時間がかかりませんでした。 ;) –

+0

ありがとう、ありがとう! –

0

object.equals(Object obj)は、オブジェクトのタイプに応じてオブジェクトの属性に応じてオブジェクトが同一で、そのメソッドが実装されている場合は、trueを返します。

==は、オブジェクトのインスタンスが同じ場合にtrueを返します。

+0

「同一」とはどういう意味ですか?同じクラスタイプと同じ値ですか? –

+0

'equals'と呼ばれるクラスが実際にそのメソッドを実装するかどうかによって異なります。すべての文字を1つずつ比較し、同じものであればtrueを返します。 – Dimme

+0

あなたはequalsメソッドを文字列比較のためのものと考えることができ、==オブジェクトの識別(オブジェクトの場所)をチェックするために使用されます! – Arung

2

java.lang.Object.equals==のデフォルトの動作は、両方の参照aとbが同じオブジェクトを指している場合はtrueを返します。そうでなければfalse。

値を比較する場合は、equalsをオーバーライドする必要があります。それはStringと他のいくつかのタイプが行ったことです。あなたは無料でそれを手に入れません。メソッドをjava.lang.Objectからオーバーライドする必要があります。

ジョシュア・ブロッホの「効果的なJava」chapter 3を正しく読んで、正しく実行する方法を確認することをお勧めします。

+0

次に、これら2つの違いは何ですか? –

+0

ブロッホの章へのリンク+1。 –

+0

'=='は常に同じオブジェクトを参照することを意味します。 'equals'とは、' equals'メソッドを呼び出すオブジェクトの型に依存します。 –

0

はObject.equalsの実装は、次のとおり

public class Object { 
    public boolean equals(Object obj) { 
     return (this == obj); 
    } 
} 

これはobjが正確thisと同じオブジェクトである場合にのみtrueを返します。 Peter Lawrey氏の答えによると、他のクラスのequalsの定義は、コード化の仕方によってまったく異なります。 2つのオブジェクトが同じクラス、または階層的に関連するクラスであるという要件さえありません。

equalsを定義することなく、hashcodeも定義しないことは、一般的に悪い習慣とみなされます。 equalという2つのオブジェクトが同じハッシュコードを返さなければならないという要件があります。

+0

すてき、ありがとう。 –

関連する問題