Java中equals和==比的是什麼
1 . ==
int n = 3;
int m = 3;
System.out.println(n == m);
String str = new String("hello");
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1 == str2);
str1 = str;
str2 = str;
System.out.println(str1 == str2);
輸出結果 : true false true
對於八大基本型別==比較的是值所以n==m為true
對於引用型別String等比較的是物件在記憶體中的儲存地址,所以str1 == str2為false
最後一個為true,是因為str1和str2都指向了str指向的物件
2 . equals
equals方法是基類Object中的方法,因此對於所有的繼承於Object的類都會有該方法。
下面是Object類中equals方法的實現:
在Object類中,equals方法是用來比較兩個物件的引用是否相等,即是否指向同一個物件。
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1.equals(str2));
返回true
Why?
下面是String類中equals方法的具體實現:
可以看出,String類對equals方法進行了重寫,用來比較指向的字串物件所儲存的字串是否相等。
其他的一些類諸如Double,Date,Integer等,都對equals方法進行了重寫用來比較指向的物件所儲存的內容是否相等。
總結來說:
1.對於==,如果作用於基本資料型別,則比較儲存的值是否相等;如果作用於引用型別的變數,則比較的是所指向的物件的地址;
2.對於equals方法,注意:equals方法不能作用於基本資料型別的變數
如果沒有對equals方法進行重寫,則比較的是引用型別的變數所指向的物件的地址;
諸如String、Date等類對equals方法進行了重寫的話,比較的是所指向的物件的內容。
相關文章
- 深入探究Java中equals()和==的區別是什麼Java
- Java中equals與==的本質區別是什麼?Java
- JAVA中字串比較equals()和equalsIgnoreCase()的區別Java字串
- java 中equals和==的區別Java
- java為什麼要重寫hashCode和equals方法Java
- Java中 equals() 方法和 == 的區別Java
- ==和equals方法的比較
- Java技術分享:”==“和 equals 方法究竟有什麼區別?Java
- Java培訓教程:”==“和 equals 方法究竟有什麼區別?Java
- java 中/**是什麼Java
- java 中為什麼重寫 equals 後需要重寫 hashCodeJava
- Java是什麼_Java是做什麼的?Java
- 【Java面試】Mybatis中#{}和${}的區別是什麼?Java面試MyBatis
- 【Java】equals 和 == 的區別Java
- BigDecimal的equals() 和 compareTo() 方法比較Decimal
- java中RMI是什麼Java
- java中@Inherited是什麼?Java
- java中@Retention是什麼?Java
- Java中hashcode和equals效能注意點 - ShaiJavaAI
- Java equals 和 == 完全解析Java
- Java equals和==完全解析Java
- Java中(==)與equals的區別Java
- 關於Java中的equals方法Java
- 我天!xx.equals(null) 是什麼騷操作??Null
- java中死鎖是什麼Java
- java中lock介面是什麼Java
- Java和Python是什麼?有什麼區別?JavaPython
- Java併發中volatile和happen before是什麼? - javarevisitedJavaAPP
- Java(3)-POJO和Java bean的區別是什麼JavaPOJOBean
- 從原始碼探究JAVA的equals和==原始碼Java
- Spring Cloud是什麼,和Dubbo對比呢?SpringCloud
- 為什麼阿里巴巴禁止使用BigDecimal的equals方法做等值比較?阿里Decimal
- Java備忘錄《“==” 和 “equals”》Java
- java~重寫hashcode和equalsJava
- 搞懂 Java equals 和 hashCode 方法Java
- Python 中的 *args 和 **kwargs 是什麼Python
- Python中的類和物件是什麼Python物件
- Java基礎- ==和equals和hashCode的區別Java