String類的equals是如何進行字串比較的
阿新 • • 發佈:2018-11-07
public static void main(String[] args) {
String a = new String("abc");
String b = new String("abc");
System.out.println(a==b);//結果為false
System.out.println(a.equals(b));//結果為true
}
==和equals的區別是什麼呢?
簡單的說,“==”用於判斷引用是否相等,equals()用於判斷值是否相等
a和b都是通過new得到的一個物件,是兩個不同的物件,所以其記憶體地址也是不同的;所以 a==b 返回的結果是false
看一下equals,程式碼:
public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char value[]; private int hash; // Default to 0 public String(String original) {//我們通過new String("abc");把值放入value[] this.value = original.value; this.hash = original.hash; } /**省略其他的程式碼**/ public boolean equals(Object anObject) { if (this == anObject) {//如果兩個值的引用相同,直接返回true return true; } if (anObject instanceof String) {//如果是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; } /**省略其他的程式碼**/ }
本文轉載:https://www.cnblogs.com/wwzyy/p/5504938.html