==比較的是位址,可以比較物件和屬性;
equals只用來比較物件,equals內部是由==實現的,所以比較的也是位址,因為每個物件都繼承了object自帶equals方法,但有些類庫重寫了equals方法。
1.首先對於屬性的,因為是八種基本資料型別之一:byte,short,char,int,long,float,double,boolean,只能用==比較,而且比較的是他們的數值。
2.對於一般物件的比較,equals和==的效果相同,都是判斷兩個物件的位址是否相同,即是否是指相同乙個物件。
但是,有幾個特例:在一些類庫當中equals這個方法被重寫了,如string、integer、date。在這些特殊的物件中,==比較的還是位址,但是equal比較的是值。
例如我們宣告了乙個string物件a=「ssss」,"ssss"會被放到常量池中,再宣告了乙個string物件b="ssss"時,只是指向常量池中同乙個字串的引用,所以,equals和==一樣,都是true。如果寫b=new string(「ssss」),指定b偏不用常量池中的資料,結果就變成了false。
integer在-127-128之間也是預設放到常量池中
**:
public
class
learnequals
public
static
void
fun2()
}
比較八種資料型別,只能用==,且是值比較。
比較一般物件(除string、integer、date)==和equals一樣都是比較位址,看是不是同乙個物件。
比較string、integer、date時,==還是比較位址(這裡還要注意是不是常量池),equals是比較的值。
Java中equals 和「 」區別
1.對於基礎資料型別,使用 比較值是否相等 2.對於復合資料型別 類 使用equals 和 效果是一樣的,兩者比較的都是物件在記憶體中的存放位址 確切的說,是堆記憶體位址 3.對於string integer date等覆蓋了equals 方法的型別,比較的是存放的記憶體位址。而equals 的結果...
Java 中equals 和 的區別
疑問 equals 和 是用來幹什麼的?1 比較8種基本資料型別的引用位址,是否一樣 2 比較引用物件的內容,即堆的記憶體位址,是否一樣 疑問 兩者區別?public boolean equals object o 如果不重寫equals 兩者是沒有區別的。分析下string中兩者的區別 strin...
Java中「equals「和「 「的區別
1.在基本資料型別中 對於基本型別而言,判斷的是兩個變數的值是否相等 equals 不能用於基本資料型別,如果要比較,就需要使用基本型別對應的包裝類 2.在引用型別中 比較的是變數的值在棧記憶體中存放的物件的堆記憶體位址 即比較引用的記憶體位址 equals 比較的是兩個物件的值是否相同 不是比較記...