Javaのequals()

高洛峰
リリース: 2016-12-16 09:13:02
オリジナル
1168 人が閲覧しました

数日間の学習を経て、ようやくイコールの使い方をより包括的に理解し、まとめを作成しました。

1.equals の本来の意味 - つまり、Object オブジェクトで定義されている equals() メソッドの意味です。

(ここでは == の関数を最初に付けておきます。説明は後ほどします。 == と equals() メソッドの関係は非常に密接であるため、後で私自身の意見を述べます。

== は参照と比較の比較に使用されます 基本データ型には異なる機能があります:
基本データ型を比較す​​ると、2 つの値が同じ場合、結果は true になります
参照を比較する場合、参照がメモリ内の同じオブジェクトを指している場合、結果は true)

public booleanquals(Object obj)

比較ルールは次のとおりです: パラメータ obj によって参照されるオブジェクトが現在のオブジェクトと同じオブジェクトである場合は true を返し、それ以外の場合は false を返します。

public class Fish {
private intweight;
private String color;

public Fish(int Weight, String color) {
this.color = color;
this.weight = Weight;
}

public int getWeight( ) {
return Weight;
}

public void setWeight(int Weight) {
This.weight = Weight;
}

public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color ;
}

}

public class EqualsTest {
public static void main(String[] args) {
Fish f1 = new Fish(1, "blue");
Fish f2 = new Fish(1, "blue");

System.out.println(f1 == f2);

System.out.println(f1.equals(f2));を使用して を使用して ‐ を通じて ' 's' ‐ ‐ ‐‐‐‐‐ to to


to —

false

false

equals() メソッドの本来の目的は、2 つのオブジェクトの参照が同じかどうかを判断することであることがわかります。 。


2. JDK クラスには、オブジェクト クラスの equals() メソッドをカバーするクラスがいくつかあります。比較ルールは次のとおりです。2 つのオブジェクトが同じ型および同じ内容を持つ場合、これらのクラスは true を返します。 :

java.io.file,java.util.Date,java.lang.string、パッケージ化クラス (Integer、Double など)

public class EqualsTest {

public static void main(String[] args) {
String s1=new String("sss" );

String s2=new String("sss") ——————演算結果は——————


false
true

; Stringのequals()メソッドはオーバーライドされ、その意味は2つのオブジェクトの内容を比較することに変わります

3.equals()メソッドを自分でオーバーライドしたい場合は、内容を比較させるか、使用します。他の方法で (もちろん、通常は内容を比較するために使用しますが、オーバーライドされたメソッドの実際の実装は何ですか? はい、誰にもわかりません。O(∩_∩)O~)

public class Fish {

private int重量;

プライベート文字列の色;


public Fish(int Weight, String color) {
this.color = color;
this.weight = Weight;
}

@Override
public int hashCode() {
final int prime = 31;
int 結果 = 1 ;
result = prime * result + ((color == null) ? 0 : color.hashCode());
result = prime * result +weight;
return result;
}

@Override
public booleanquals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false ;
魚その他 = ( Fish) obj;
if (color == null) {
if (other.color != null)
return false;
} else if (!color.equals(other.color))
return false;
if (体重!= other.weight)
return false;
return true;
}
public int getWeight() {
returnweight;
}

public void setWeight(int Weight) {
this.weight = 体重;
}

public string getColor(){
color; ) {
Fish f1 = new Fish(1, "blue");

Fish f2 = new Fish(1, "blue");



System.out.println(f1 == f2);

System.out .println(f1.equals(f2));

}

}

——————运行結果は——————

false

true

この例子中我复写了equals()メソッド和hashcode() メソッド、equals() メソッドの本質を切り離し、2 つのオブジェクトの参照が同じかどうかを比較するのではなく、その内容が同じかどうかを比較します。これらの基本的な計算があり、すべての関数は基本的な計算を使用して実行されることがわかります。一方、== は基本的な数値の 1 つであり、その役割: 参照および基本的なデータ型の比較に使用される場合は、異なる機能があります:
2 つの値が同じ場合、結果は次のようになります。 true
しかし、比較参照の際、内部に保存されている同じオブジェクトを参照している場合、結果が true
であるため、equals() をメソッドとして推論することができ、その中で使用される肯定は == 計算です。つまり、equals() メソッドは、== 演算子がオブジェクトを比較する際に最適な機能であるとは言えません。上の 3 番目の例では、オブジェクトの内容が同じかどうかを比較する目的で、writeequals() メソッドを使用しています。


Java 内のその他の equals() 関連文章请关注 PHP中文网!

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート