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方法一樣,判斷是否是同一個物件。如果不是同一個物件,那麼再判斷長度是否相等,再判斷判斷每一個字元是否相等。
相關文章
- String的equals和hashCode方法
- 關於Java中的equals方法Java
- Java中 equals() 方法和 == 的區別Java
- Java中Object類的常用方法JavaObject
- Java中String類的常用方法Java
- 簡單介紹java中的equals()方法Java
- JavaBean重寫Object類中的方法JavaBeanObject
- 【JAVA】筆記(6)--- toString方法;equals方法;finalize方法;package與import;內部類;Java筆記PackageImport
- java中String類常用方法的使用與例項Java
- Equals方法
- JAVA中object類中toString()方法JavaObject
- Java中(==)與equals的區別Java
- ==和equals方法的比較
- ==和equals方法的區別
- Java之String的equals與contentEquals區別Java
- String 類的 substring () 方法
- String類常用的方法
- Java基礎-- ==號與equals()方法的區別Java
- 【轉】Object類的常用方法Object
- C# 有關List<T>的Contains與Equals方法C#AI
- BigDecimal的equals() 和 compareTo() 方法比較Decimal
- Java與眾不同的字串-String類Java字串
- Hashcode相同但是equals不同的例子
- python類中的方法Python
- Java面試系列第2篇-Object類中的方法Java面試Object
- javaSE中的==和equals的聯絡與區別Java
- Java Object類的各個方法JavaObject
- java 中equals和==的區別Java
- 搞懂 Java equals 和 hashCode 方法Java
- Java中Scanner類的常用方法Java
- Java中StringBuffer類的常用方法Java
- Java中Integer類的基本方法Java
- Java中equals與==的本質區別是什麼?Java
- Java基礎系列-equals方法和hashCode方法Java
- 重寫equals方法以及重寫tostring方法
- Java中equals和==比的是什麼Java
- Java中hashcode和equals效能注意點 - ShaiJavaAI
- 自動生成hashcode和equals方法