Java 中equals 和 的區別

2021-07-26 02:24:37 字數 1215 閱讀 2360

疑問:equals 和==是用來幹什麼的?

1:比較8種基本資料型別的引用位址,是否一樣

2:比較引用物件的內容,即堆的記憶體位址,是否一樣

疑問:兩者區別?

public

boolean

equals(object o)

如果不重寫equals 兩者是沒有區別的。

分析下string中兩者的區別

string a =

"abc";

string b =

"abc";

string c = a;

string d =

newstring("abc");

printerutil.

log("a == b ="

+ (a==b));

printerutil.

log("a equals b ="

+ (a.

equals(b)));

printerutil.

log("b == c ="

+ (b==c));

printerutil.

log("b equals c ="

+ (b.

equals(c)));

printerutil.

log("d == c ="

+ (d==c));

printerutil.

log("d equals c ="

+ (d.

equals(c)));

輸出結果

a == b =true

a equals b =true

b == c =true

b equals c =true

d == c =false

d equals c =true

「abc」是一塊記憶體位址,new string(「abc」)又重新分配來一塊記憶體位址,故d==c 等於false,equals 之所以等於true,看下原始碼

public boolean equals(object anobject) 

if (anobject instanceof string)

return

true;}}

return

false;

}

Java中equals 和「 」區別

1.對於基礎資料型別,使用 比較值是否相等 2.對於復合資料型別 類 使用equals 和 效果是一樣的,兩者比較的都是物件在記憶體中的存放位址 確切的說,是堆記憶體位址 3.對於string integer date等覆蓋了equals 方法的型別,比較的是存放的記憶體位址。而equals 的結果...

Java中「equals「和「 「的區別

1.在基本資料型別中 對於基本型別而言,判斷的是兩個變數的值是否相等 equals 不能用於基本資料型別,如果要比較,就需要使用基本型別對應的包裝類 2.在引用型別中 比較的是變數的值在棧記憶體中存放的物件的堆記憶體位址 即比較引用的記憶體位址 equals 比較的是兩個物件的值是否相同 不是比較記...

java中equals和 的區別

比較的是位址,可以比較物件和屬性 equals只用來比較物件,equals內部是由 實現的,所以比較的也是位址,因為每個物件都繼承了object自帶equals方法,但有些類庫重寫了equals方法。1.首先對於屬性的,因為是八種基本資料型別之一 byte,short,char,int,long,f...