java中==和equlas區別
==和euqals
要區分==和equals首先我們要知道==是對地址值進行比較,equals在常用的String類中我們似乎看到的是對兩個字串的值是否相等進行比較
要區分這兩者到底有何不同,需要簡單看一下Object和String的原始碼
Object原始碼
//Obejct中的equlas
public boolean equals(Object obj) {
return (this == obj);
}
String原始碼
//String中的equals
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
- Object中可以明顯看出equals方法通過==進行地址值的比較,可以看出equals和==在這裡沒有區別
- String重寫了equals方法後仍然通過==進行地址值的比較,但是增加了值比較的判定條件,在String類中equals並不能和==相提並論
總結
從上面條件我們可以得出結論
1. equals本質是對地址值進行比較和==沒有什麼區別
2. 在平常業務處理中我們經常會對equals和hashcode方法進行重寫,重寫後的equals增加新的業務判斷邏輯,不能與==劃上等號
3. equals和==是否有區別取決於我們平日業務邏輯的制定,不能隨口臆斷
相關文章
- java 中equals和==的區別Java
- JAVA 中interface 和 abstract 區別Java
- java中size()和length區別Java
- Java中 equals() 方法和 == 的區別Java
- Java中Vector和ArrayList的區別Java
- Java中抽象類和介面的區別Java抽象
- 閒說: Java 中Comparable 和 Comparator 的區別Java
- java.io.File中mkdir()和mkdirs()區別Java
- java中Scanner類nextLine()和next()的區別和使Java
- java:Date和DateTime區別Java
- 【Java】equals 和 == 的區別Java
- JAVA中字串比較equals()和equalsIgnoreCase()的區別Java字串
- 【Java面試】Spring中 BeanFactory和FactoryBean的區別Java面試SpringBean
- java泛型中<?>和<T>有什麼區別?Java泛型
- Java中異常分類和Throw和Throws的區別Java
- 深入探究Java中equals()和==的區別是什麼Java
- 【Java面試】Mybatis中#{}和${}的區別是什麼?Java面試MyBatis
- java yield()和sleep()的區別Java
- Java中基本資料型別和包裝型別有什麼區別?Java資料型別
- Java中(==)與equals的區別Java
- Java中replace與replaceAll區別Java
- Java中 length、length()、size()區別Java
- JavaScript中for in 和for of的區別JavaScript
- Js中for in 和for of的區別JS
- mysql中!=和is not的區別MySql
- Python中is和==的區別Python
- JavaScript中==和===的區別JavaScript
- Linux中“>”和“>>”的區別Linux
- Python 中 is 和 == 的區別Python
- mysql中“ ‘ “和 “ ` “的區別MySql
- Java之InetSocketAddress和SocketAddress的區別Java
- Java之.class和.getClass()的區別Java
- Java之for(;;)和while(true)的區別JavaWhile
- 【Java】sleep和wait區別總結JavaAI
- PHP, Python和Java的區別分享PHPPythonJava
- Java基礎- ==和equals和hashCode的區別Java
- Java中final、finally、finalize的區別Java
- Java中final,finally,finalize的區別Java