==
同じ基本データ型間の比較によく使用され、同じ型のオブジェクト間の比較にも使用できます。
== が基本データ型を比較している場合、比較は 2 つの基本データ型の値が等しいかどうかです。
== が比較される 2 つのオブジェクトである場合、比較されるのは 2 つのオブジェクトの参照であり、2 つのオブジェクトの参照が等しいかどうかを比較することになります。 ;
equals メソッドが主に使用されます。 2 つのオブジェクト間で、あるオブジェクトが別のオブジェクトと等しいかどうかを検出します。
public boolean equals(Object obj) { return (this == obj); }
の
equals メソッドのソース コードを見てみましょう。このメソッドの機能は、2 つのオブジェクトが等しいかどうかを判断することでもあります。 2 つの使用状況: 状況 1: オブジェクトの equals メソッドがオーバーライドされていない場合、
equals が呼び出されるときに、2 つの参照が一致するかどうかを比較します。オブジェクトが等しい、つまり、オブジェクトが同じメモリ領域を指しているかどうかです。このとき、
== 2 つのオブジェクトを比較することと等価です。
package com.xiao; /** * @author :小肖 * @date :Created in 2022/3/11 14:42 */ public class Dog { private String name; private Integer age; public Dog() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Dog(String name, Integer age) { this.name = name; this.age = age; } }テストクラス
import com.xiao.Dog; public class Test { public static void main(String[] args) { Dog dog = new Dog("小旺",2); Dog dog1 = new Dog("小旺",2); System.out.println(dog.equals(dog1)); } }テスト結果
falseケース 2: オブジェクト
equals メソッドがオーバーライドされました。一般に、書き直された
equals メソッドは、2 つのオブジェクトの内容が等しいかどうかを比較します。等しい場合は
true を返し、そうでない場合は
false を返します。
package com.xiao; /** * @author :小肖 * @date :Created in 2022/3/11 14:42 */ public class Dog { private String name; private Integer age; public Dog() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Dog(String name, Integer age) { this.name = name; this.age = age; } @Override public boolean equals(Object obj) { if(obj.getClass() != getClass()){ return false; } Dog dog = (Dog) obj; if(dog.getAge() == age && dog.getName().equals(name)){ return true; } return false; } }テスト結果テストクラスのコードは上記と同じです
true3 、equals メソッドには次の特性があります。
以上がJavaでの==とequalsの使用の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。