[Java]==和equals()的区别(按照数据类型区分)
背景知識
【引用類型】
復合數據類型是引用類型
**1.基本數據類型,也稱原始數據類型。**byte,short,char,int,long,float,double,boolean
他們之間的比較,應用雙等號(==),比較的是他們的值。
基本數據類型比較, == 和 Equals 兩者都是比較值
注意注釋 創建的方法不同 導致地址不同
2.復合數據類型(類) /引用類
當他們用(==)進行比較的時候,比較的是他們在內存中的存放地址,所以,除非是同一個new出來的對象,他們的比較后的結果為true,否則比較后結果為false。
JAVA當中所有的類都是繼承于Object這個基類的,在Object中的基類中定義了一個equals的方法,這個方法的初始行為是比較對象的內存地址, 對于復合數據類型之間進行equals比較,在沒有覆寫equals方法的情況下,他們之間的比較還是基于他們在內存中的存放位置的地址值的
因為Object的equals方法也是用雙等號(==)進行比較的,所以equals的結果跟雙等號 的結果相同
但在一些類庫當中這個方法被覆蓋掉了,如String,Integer,Date,在這些類當中equals有其自身的實現,而不再是比較類在堆內存中的存放地址了。
eclipse還是很智能的,它首先是判斷兩個對象的地址是否相等,若不相等再進行下面的成員變量判斷。
但這個方法體是完全可以由我們自己實現的,即便是我們直接 return true 都是可以的,只要能滿足我們的業務需求,怎樣寫都是無所謂的,因此,equals比較的并不一定是對象的內容,它還可以由其他的信息來指導比較。
【練習題】
true,false
其實是因為 Integer 在常量池中的存儲范圍為[-128,127],127在這范圍內,因此是直接存儲于常量池的,而128不在這范圍內,所以會在堆內存中創建一個新的對象來保存這個值,所以m,n分別指向了兩個不同的對象地址,故而導致了不相等。
總結
以上是生活随笔為你收集整理的[Java]==和equals()的区别(按照数据类型区分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 伯纳德•罗森伯格先生参加华为技术2016
- 下一篇: LeetCode刷题指南与答案