最初に例を見てみましょう。
コードコピーは次のとおりです。
パッケージcom.amos;
/**
* @ClassName:EqualTest
* @description:Javaの等しいと==の比較
* @author:amosli
*/
パブリッククラスequaltest {
public static void main(string [] args){
int a = 1;
フロートB = 1.0F;
System.out.println(a == b); // true
文字列c = new String( "hi_amos");
文字列d = new String( "hi_amos");
System.out.println(c == d); // false
System.out.println(C.Equals(d)); // true
}
}
2つの変数がJavaで等しいかどうかを判断する2つの主な方法があります。1つは==演算子を使用することであり、もう1つはEqualsメソッドを使用して、2つが同じかどうかを判断することです。
1)== 2つの変数が基本的なタイプの変数であり、両方とも数値であるかどうかを判断する場合、データ型は厳密にする必要はありません2つの変数が等しく、trueが返されます。
2)2つの参照型変数の場合、それらはオブジェクトを指す必要があります。
上記のように、同じ新しい文字列が説明されている場合、==は同じものがfalseを返すかどうかを決定しますが、等しいものはtrueを返します。
Equalsメソッドをターゲットにした文字列クラスは、ソースコードを確認すると、次のソースコードに示されているように、等しいものが特別なケースと見なされることがわかります。
コードコピーは次のとおりです。
public boolean equals(object anobject){
if(this == anobject){
trueを返します。
}
if(anobject instanceof string){
文字列anotherString =(string)anobject;
int n = value.length;
if(n == anotherstring.value.length){
char v1 [] = value;
char v2 [] = anothestring.value;
int i = 0;
while(n - != 0){
if(v1 [i]!= v2 [i])
falseを返します。
i ++;
}
trueを返します。
}
}
falseを返します。
}
equalsメソッドは、実際には最初から==判別式を呼び出し、さらに値が正しいかどうかを決定します。