==
とobject.equal(Object obj)
の違いを次のように理解できますか? :object.equal(Object obj)
戻り二つのオブジェクトのtrue
かの値です"=="等しい "(オブジェクトobj)"
は同じです。 ==
は、タイプとの両方の場合、true
を返す一方、2つのオブジェクトの値は同じです。
==
とobject.equal(Object obj)
の違いを次のように理解できますか? :object.equal(Object obj)
戻り二つのオブジェクトのtrue
かの値です"=="等しい "(オブジェクトobj)"
は同じです。 ==
は、タイプとの両方の場合、true
を返す一方、2つのオブジェクトの値は同じです。
==
は、参照がまったく同じ場合はtrueを返します。
equals(Object)
は、trueを返すようにメソッドが記述されたときにtrueを返します。これは、同じオブジェクト、同等のオブジェクト、または開発者が書くように感じたことがあります。あなたは、それは同じことを行い見ることができるように
デフォルトの実装は
public boolean equals(Object obj) {
return (this == obj);
}
として書かれています。
私は、equals(Object obj)のデフォルト実装について質問しています –
私はソースコードを読んでいたでしょうが、それほど時間がかかりませんでした。 ;) –
ありがとう、ありがとう! –
object.equals(Object obj)
は、オブジェクトのタイプに応じてオブジェクトの属性に応じてオブジェクトが同一で、そのメソッドが実装されている場合は、true
を返します。
==
は、オブジェクトのインスタンスが同じ場合にtrue
を返します。
java.lang.Object.equals
と==
のデフォルトの動作は、両方の参照aとbが同じオブジェクトを指している場合はtrueを返します。そうでなければfalse。
値を比較する場合は、equalsをオーバーライドする必要があります。それはString
と他のいくつかのタイプが行ったことです。あなたは無料でそれを手に入れません。メソッドをjava.lang.Object
からオーバーライドする必要があります。
ジョシュア・ブロッホの「効果的なJava」chapter 3を正しく読んで、正しく実行する方法を確認することをお勧めします。
次に、これら2つの違いは何ですか? –
ブロッホの章へのリンク+1。 –
'=='は常に同じオブジェクトを参照することを意味します。 'equals'とは、' equals'メソッドを呼び出すオブジェクトの型に依存します。 –
はObject.equalsの実装は、次のとおり
public class Object {
public boolean equals(Object obj) {
return (this == obj);
}
}
これはobj
が正確this
と同じオブジェクトである場合にのみtrue
を返します。 Peter Lawrey氏の答えによると、他のクラスのequals
の定義は、コード化の仕方によってまったく異なります。 2つのオブジェクトが同じクラス、または階層的に関連するクラスであるという要件さえありません。
equals
を定義することなく、hashcode
も定義しないことは、一般的に悪い習慣とみなされます。 equal
という2つのオブジェクトが同じハッシュコードを返さなければならないという要件があります。
すてき、ありがとう。 –
'=='は決して意味を変えることはできませんが、 'equals()'は意味を変えることができます。 –