equals 和 ==
equals
equals繼承Object類的基本方法,預設是按==比較
‘’= =’’
==比較八大基本型別時:判斷的是值
int i1 = 10;
int i2 = 10;
int i3 = 12;
System.out.println(i1==i2);//true
System.out.println(i1==i3); //false
==比較物件時,比較的是物件的地址值
Tiger t1 = new Tiger();
Tiger t2 = new Tiger();
Tiger t3 = t1;
System.out.println(t1.equals(t2));//false
System.out.println(t1 == t2);//false
System.out.println(t1.equals(t3));//true
System.out.println(t1 == t3);//true
equals(Object obj)
- 如果要比較兩個物件間的地址值,就可以使用預設的Object提供的方式。但是,如果想要比較物件間的屬性值,就需要重寫equals()
- 基礎型別是按值比較 ,預設使用Object提供的==比較
比較八大基本型別時:判斷的是值 - 物件為引用型別,引用型別按記憶體地址比較 ==比較物件時,比較的是物件的地址值
- 物件為引用型別,引用型別按記憶體地址比較 ==比較物件時,比較的是物件的地址值
初步認識equals與==的區別
JVM中的記憶體分配:
在JVM中,記憶體分為堆記憶體跟棧記憶體。他們二者的區別是: 當我們建立一個物件(new Object)時,就會呼叫物件的建構函式來開闢空間,將物件資料儲存到堆記憶體中,與此同時在棧記憶體中生成對應的引用,當我們在後續程式碼中呼叫的時候用的都是棧記憶體中的引用。還需注意的一點,基本資料型別是儲存在棧記憶體中。
1)對於==,比較的是值是否相等
-
如果作用於基本資料型別的變數,則直接比較其儲存的 “值”是否相等;
-
如果作用於引用型別的變數,則比較的是所指向的物件的地址
2)對於equals方法,
注意:equals方法不能作用於基本資料型別的變數,equals繼承Object類,比較的是是否是同一個物件
- 如果沒有對equals方法進行重寫,則比較的是引用型別的變數所指向的物件的地址;
- 諸如String、Date等類對equals方法進行了重寫的話,比較的是所指向的物件的內容。
相關文章
- Java equals和==完全解析Java
- Java equals 和 == 完全解析Java
- java~重寫hashcode和equalsJava
- ==和equals方法的比較
- ==和equals方法的區別
- 【Java】equals 和 == 的區別Java
- String的equals和hashCode方法
- Java備忘錄《“==” 和 “equals”》Java
- 搞懂 Java equals 和 hashCode 方法Java
- 自動生成hashcode和equals方法
- HashSet中重寫haseCode和equals
- java 中equals和==的區別Java
- Java基礎- ==和equals和hashCode的區別Java
- hashCode()和equals()的區別?(skycto JEEditor)
- 深入理解equals和==的區別
- Java中 equals() 方法和 == 的區別Java
- 從原始碼探究JAVA的equals和==原始碼Java
- BigDecimal的equals() 和 compareTo() 方法比較Decimal
- 【ASP.net】Equals 和 == 的區別ASP.NET
- Java中hashcode和equals效能注意點 - ShaiJavaAI
- 關於重寫equals()和hashCode()的思考
- 你真的知道 == 和 equals 的區別嗎?
- Java基礎系列-equals方法和hashCode方法Java
- 你真的懂 == 和 equals 的區別嗎?
- Java中equals和==比的是什麼Java
- java equalsJava
- Equals方法
- equals & hashCode
- java自定義equals函式和hashCode函式Java函式
- 第四章 ==和equals()的區別
- J2SE-("").equals(str)與str.equals("")
- java基本型別和包裝型別的“==”和equals()方法Java型別
- hashCode()與equals()
- equals&hashCode
- StringUtils.equals()
- 『Java 語法基礎』對 equals() 和 hashCode() 的理解Java
- javaSE中的==和equals的聯絡與區別Java
- Java經典面試題: == 和 equals( )的區別Java面試題