数日間の学習を経て、ようやくイコールの使い方をより包括的に理解し、まとめを作成しました。
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
2. JDK クラスには、オブジェクト クラスの equals() メソッドをカバーするクラスがいくつかあります。比較ルールは次のとおりです。2 つのオブジェクトが同じ型および同じ内容を持つ場合、これらのクラスは true を返します。 :
public static void main(String[] args) {
String s1=new String("sss" );
false
true
; Stringのequals()メソッドはオーバーライドされ、その意味は2つのオブジェクトの内容を比較することに変わります
3.equals()メソッドを自分でオーバーライドしたい場合は、内容を比較させるか、使用します。他の方法で (もちろん、通常は内容を比較するために使用しますが、オーバーライドされたメソッドの実際の実装は何ですか? はい、誰にもわかりません。O(∩_∩)O~)
public class Fish {
プライベート文字列の色;
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");
System.out .println(f1.equals(f2));
}}
——————运行結果は——————
true
この例子中我复写了equals()メソッド和hashcode() メソッド、equals() メソッドの本質を切り離し、2 つのオブジェクトの参照が同じかどうかを比較するのではなく、その内容が同じかどうかを比較します。これらの基本的な計算があり、すべての関数は基本的な計算を使用して実行されることがわかります。一方、== は基本的な数値の 1 つであり、その役割: 参照および基本的なデータ型の比較に使用される場合は、異なる機能があります:
2 つの値が同じ場合、結果は次のようになります。 true
しかし、比較参照の際、内部に保存されている同じオブジェクトを参照している場合、結果が true
であるため、equals() をメソッドとして推論することができ、その中で使用される肯定は == 計算です。つまり、equals() メソッドは、== 演算子がオブジェクトを比較する際に最適な機能であるとは言えません。上の 3 番目の例では、オブジェクトの内容が同じかどうかを比較する目的で、writeequals() メソッドを使用しています。
Java 内のその他の equals() 関連文章请关注 PHP中文网!