Java Stringクラスequals()メソッドの実装
1703 ワード
1、ソースを貼って、とりあえず自分で読む
2、釈放
NO 1、参照値が等しいか否かを判断し、等しい、すなわちtはrueを返し、下へ行かなくてもよい.
NO 2、タイプが一致しているかどうかを判断し、タイプが同じで、長さが等しいかどうかを判断し、1つの比較文字が同じで、完全に一致しているかどうかを判断すると、tureを返し、間違っているとfalseを返す.
説明:2つのオブジェクトが等価である場合、必ず同じタイプであることを前提とします.
NO 3、タイプが一致せずfalseを返します.
3、コードスタイルを変えて、論理を簡略化する
簡単に説明する
1、引用が異なり、等しくない;
2、タイプが违って、等しくありません;
3、長さが等しくなく、等しくない.
4、文字が等しくなくて、等しくありません;
5、すべての不一致を排除する、すなわち等しい.
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
2、釈放
NO 1、参照値が等しいか否かを判断し、等しい、すなわちtはrueを返し、下へ行かなくてもよい.
NO 2、タイプが一致しているかどうかを判断し、タイプが同じで、長さが等しいかどうかを判断し、1つの比較文字が同じで、完全に一致しているかどうかを判断すると、tureを返し、間違っているとfalseを返す.
説明:2つのオブジェクトが等価である場合、必ず同じタイプであることを前提とします.
NO 3、タイプが一致せずfalseを返します.
3、コードスタイルを変えて、論理を簡略化する
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (!(anObject instanceof String)) {
return false;
}
String anotherString = (String) anObject;
int n = value.length;
if (n != anotherString.value.length) {
return false;
}
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
簡単に説明する
1、引用が異なり、等しくない;
2、タイプが违って、等しくありません;
3、長さが等しくなく、等しくない.
4、文字が等しくなくて、等しくありません;
5、すべての不一致を排除する、すなわち等しい.