String類中的equals方法與Object類中的equals方法的不同點
1.首先我們看看Object類中的equals方法
public boolean equals(Object obj) {
return (this == obj);
}
我們可以看出Object類中判斷的是否是同一個物件,我們接下來來看看下面這個例子
Employee emp1 = new Employee("張三", 5000, 2005, 5 ,5);
Employee emp2 = new Employee("張三", 5000, 2005, 5 ,5);
System.out.println(emp2.equals(emp1));
這裡停下來思考一下會輸出什麼呢?
這裡我相信很多像我一樣的初學者認為會輸出true。但是答案卻是false,為什麼呢?我們在看看方法體裡唯一的一句程式碼
return (this == obj);
this==obj具體的是代表什麼呢?其實這裡是判斷this跟obj的地址是否相等,也就是判斷在堆裡是否是同一個物件。
其實很容易就能看出棧裡了emp1和emp2裡存放的地址並不是一樣的,所以自然輸出false。
2.接著我們看看String類中的equals方法
public boolean equals(Object anObject) {
//判斷是否同一個物件
if (this == anObject) {
return true;
}
//判斷anObject 是否是String的例項物件
//如果是的話判斷兩個String物件的長度是否相等
//如果相等再判斷每一個字元是否相等
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;
}
String類中的equals方法主要做的是兩個東西,第一個跟Object裡的equals方法一樣,判斷是否是同一個物件。如果不是同一個物件,那麼再判斷長度是否相等,再判斷判斷每一個字元是否相等。
相關文章
- Object類和String類equals方法的區別Object
- Object類-equals()、==、hashCode()Object
- java基礎:Object的equals方法JavaObject
- java String的equals,intern方法Java
- 關於Java中的equals方法Java
- ArrayList的contains方法與Object的equals方法的關係AIObject
- String的equals和hashCode方法
- Java中 equals() 方法和 == 的區別Java
- Java中Object類的常用方法JavaObject
- String物件的equals()與 = =物件
- 簡單介紹java中的equals()方法Java
- JavaBean重寫Object類中的方法JavaBeanObject
- Java中String類的常用方法Java
- 重寫Object.equals()方法和Object.hashCode()方法Object
- Java中(==)與equals的區別Java
- java中equals方法與==邏輯運算子薦Java
- java中String類常用方法的使用與例項Java
- ==和equals方法的區別
- JAVA中object類中toString()方法JavaObject
- 【JAVA】筆記(6)--- toString方法;equals方法;finalize方法;package與import;內部類;Java筆記PackageImport
- java equals()方法的注意事項Java
- Java基礎-- ==號與equals()方法的區別Java
- Java面試系列第2篇-Object類中的方法Java面試Object
- 【轉】Object類的常用方法Object
- javaSE中的==和equals的聯絡與區別Java
- java 中equals和==的區別Java
- Java中equals和==的區別Java
- Java之String的equals與contentEquals區別Java
- python類中的方法Python
- Java Object類的各個方法JavaObject
- Java String類的replaceAll方法Java
- Java與眾不同的字串-String類Java字串
- 在java中“equals”和“==”的區別Java
- Hashcode相同但是equals不同的例子
- 細說equals()方法和hashCode()方法
- 詳解equals()方法和hashCode()方法
- Java中Scanner類的常用方法Java
- Java中Integer類的基本方法Java