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中equals和==的區別Java
- java中size()和length區別Java
- Java中Vector和ArrayList的區別Java
- Java中 equals() 方法和 == 的區別Java
- java中的==和equal的區別Java
- 對於java中的"\"和"/" 區別Java
- Java中ArrayList和LinkedList區別Java
- 在java中“equals”和“==”的區別Java
- Java中throw和throws的區別Java
- Java中堆和棧的區別Java
- Java中抽象類和介面的區別Java抽象
- Java中Runnable和Thread的區別Javathread
- Java 中Thread 和Runnable的區別Javathread
- Java中volatile和synchronized的區別Javasynchronized
- java.io.File中mkdir()和mkdirs()區別Java
- JAVA中Get和Post請求的區別Java
- java中list、set和map 的區別(轉)Java
- 【Java面試】Mybatis中#{}和${}的區別是什麼?Java面試MyBatis
- 【Java面試】Spring中 BeanFactory和FactoryBean的區別Java面試SpringBean
- java泛型中<?>和<T>有什麼區別?Java泛型
- Java中HashMap和TreeMap的區別深入理解JavaHashMap
- Java中Comparable和Comparator介面區別分析Java
- Java中異常分類和Throw和Throws的區別Java
- 【Java】equals 和 == 的區別Java
- Java和Javascript的區別JavaScript
- java和html的區別JavaHTML
- Java集合面試題(03) Java中HashMap和HashTable之間區別Java面試題HashMap
- 深入探究Java中equals()和==的區別是什麼Java
- Java中final、finally和finalize的區別Java
- Java中final,finalize和finally的區別Java
- Java中long和Long有什麼區別 (轉載)Java
- Java 泛型中? super T和? extends T的區別Java泛型
- 閒說: Java 中Comparable 和 Comparator 的區別Java
- Java中replace與replaceAll區別Java
- Java中(==)與equals的區別Java
- Java中 length、length()、size()區別Java