Java中equals與==的本質區別是什麼?
equals與的區別
==
比較的是變數(棧)記憶體中存放的物件的(堆)記憶體地址,用來判斷兩個物件的地址是否相同,即是否是
指相同一個物件。比較的是真正意義上的指標操作。
1、比較的是操作符兩端的運算元是否是同一個物件。
2、兩邊的運算元必須是同一型別的(可以是父子類之間)才能編譯通過。
3、比較的是地址,如果是具體的阿拉伯數字的比較,值相等則為true,如:
int a=10 與 long b=10L 與 double c=10.0都是相同的(為true),因為他們都指向地址為10的堆。
equals:
public class Father {
public static void main(String[] args) {
// TODO Auto-generated method stub
Father s = new Father();
s.sayHello();
s.sayHello("wintershii");
}
public void sayHello() {
System.out.println("Hello");
}
public void sayHello(String name) {
System.out.println("Hello" + " " + name);
}
}
equals
用來比較的是兩個物件的內容是否相等,由於所有的類都是繼承自java.lang.Object類的,所以
適用於所有物件,如果沒有對該方法進行覆蓋的話,呼叫的仍然是Object類中的方法,而Object中的
equals方法返回的卻是== 的判斷。
總結:
所有比較是否相等時,都是用equals 並且在對常量相比較時,把常量寫在前面,因為使用object的
equals object可能為null 則空指標
在阿里的程式碼規範中只使用equals ,阿里外掛預設會識別,並可以快速修改,推薦安裝阿里外掛來排
查老程式碼使用“==”,替換成equals
相關文章
- 深入探究Java中equals()和==的區別是什麼Java
- Java中(==)與equals的區別Java
- AI智慧與大資料的本質區別是什麼?AI大資料
- Java中equals和==比的是什麼Java
- Go 中的 channel 與 Java BlockingQueue 的本質區別GoJavaBloC
- java 中equals和==的區別Java
- Java中equals和==的區別Java
- C# 中的 == 和 equals()有什麼區別?C#
- Java面試題 equals()與"=="的區別?Java面試題
- Java中 equals() 方法和 == 的區別Java
- 在java中“equals”和“==”的區別Java
- "a".equals(b)和b.equals("a")有什麼區別
- 【Java面試】Mybatis中#{}和${}的區別是什麼?Java面試MyBatis
- 0級備份和全備份的本質區別是什麼 ?
- 為什麼我說OKR與KPI沒有本質區別?OKRKPI
- UTM與傳統防火牆有什麼本質區別(轉)防火牆
- Go 中 make 與 new 的區別是什麼?Go
- Listener和Observer有什麼本質區別嗎?Server
- 【Java】equals 和 == 的區別Java
- Java基礎-- ==號與equals()方法的區別Java
- Java培訓教程:”==“和 equals 方法究竟有什麼區別?Java
- Java技術分享:”==“和 equals 方法究竟有什麼區別?Java
- 反向代理的本質是什麼?
- SCRM與CRM的區別是什麼?
- DDD與DCI的區別是什麼?
- Java之String的equals與contentEquals區別Java
- javaSE中的==和equals的聯絡與區別Java
- Python中/與//的區別是什麼?其如何使用?Python
- 敏捷SAFe的本質是什麼?-shalloway敏捷
- 加密貨幣的本質是什麼?加密
- Linux中什麼是打包?與歸檔有什麼區別?Linux
- equals與==的區別(詳解)
- iOS-block本質是什麼?iOSBloC
- java字串“==”與“equals”的差異及與c#的區別Java字串C#
- DMAIC與DMADV的區別是什麼?AI
- Java(3)-POJO和Java bean的區別是什麼JavaPOJOBean
- 什麼叫PMP?專案管理的本質是什麼?專案管理
- Java和Python是什麼?有什麼區別?JavaPython