和equals的區別

2021-08-29 21:00:56 字數 1320 閱讀 2315

1.「==」常用來比較基本資料型別,8種基本資料型別有byte、short、long、double、char、int、float、boolean,因為變數直接儲存的就是他們的值,所以用"=="去比較,比較的就是他們的

但是復合資料型別用「==」比較的是他的堆記憶體位址

2.「equals」對於復合資料型別比較的也是它的堆記憶體位址(不能作用於基本資料型別的變數)。

但在實際專案中常用來比較string字串的內容相等是為什麼呢?那是因為對於string(還有date,integer)型別重寫了equals方法,使其比較的是儲存物件的內容是否相等,而不是堆記憶體位址。

例子:

string str1 = "hello";

string str5 = "hello";

string str2 = new string("hello");

string str4 = new string("hello");

string str3 = str2; // 引用傳遞,同一物件

system.out.println(str1 == str2); // false(str2是new的乙個新位址)

system.out.println(str1 == str3); // false(str3和str2記憶體位址一樣,和str1位址不同)

system.out.println(str2 == str3); // true(引用str2,位址相同)

system.out.println(str1 == str5); // true(string作為基本型別,沒建立新位址)

system.out.println(str4 == str2); // false(記憶體位址不同)

system.out.println(str1.equals(str2)); // true(內容一致,都是「hello」)

system.out.println(str1.equals(str3)); // true(內容一致,都是「hello」)

system.out.println(str2.equals(str3)); // true(內容一致,都是「hello」)

system.out.println(str2.equals(str4)); // true(內容一致,都是「hello」)

system.out.println(str1.equals(str5)); // true(內容一致,都是「hello」)

復合資料型別:一些由基本資料型別復合而成的資料型別,如string,陣列,一般的class類,介面啊等,除了基本的都是由基本型別復合而成的資料型別。

Equals 和 的區別

對於值型別,如果物件的值相等,則相等運算子 返回 true,否則返回 false。對於string 以外的引用型別,如果兩個物件引用同乙個物件,則 返回 true。對於 string 型別,比較字串的值。操作比較的是兩個變數的值是否相等。equals 方法比較的是兩個物件的內容是否一致 equals...

equals 和 的區別

equals 方法 是string類從它的超類object中繼承的 被用來檢測兩個物件是否相等,即兩個物件的內容是否相等。用於比較引用 和 比較基本資料型別時具有不同的功能 1.比較基本資料型別,如果兩個值相同,則結果為true 2.而在比較引用時,如果引用指向記憶體中的同一物件,結果為true s...

和equals的區別

和 equals 的區別 1.是乙個運算子。2.equals則是string物件的方法,可以.點 出來。我們比較無非就是這兩種 1 基本資料型別比較 2 引用物件比較 1 基本資料型別比較 和equals都比較兩個值是否相等。相等為true 否則為false 2 引用物件比較 和equals都是比較...