簡單比較 運算子和equals 方法的區別

2021-10-23 19:56:59 字數 1087 閱讀 3968

既可以比較基本資料型別也可以比較引用資料型別,對於基本資料型別比較的就是本身的資料值是否一致,對於引用型別就是比較堆記憶體中的位址值是否一致。

equals方法不能比較基本資料型別的變數,如果該方法沒有被重寫過的話本質上就是 ==,比較的是引用型別的變數所指向的物件的位址;但可以看到string類、integer類等類的equals()方法是被重寫過的,比較的是所指向的物件的內容。

案例演示1:

string num1 =

"hello"

;string num2 =

"hello"

;string num3 =

newstring

("hello");

system.out.

println

(num1 == num2)

;// true

system.out.

println

(num1 == num3)

;// false

system.out.

println

(num1.

equals

(num2));

// true

system.out.

println

(num1.

equals

(num3));

// true

解析:因為num1和num2指向的是同乙個位址,所以 == 的結果為true,num3是在堆裡新開闢了乙個空間,位址不同,所以結果為false;因為string類的equals方法是被重寫過的,比較的是兩個值,所以結果為true。

案例演示2:

public

class

demo01

}

解析:因為integer在常量池中的儲存範圍是(-128~127),127沒有超過這個範圍,因此integer1 和integer2指向的是同乙個常量池,所以結果為true;而128超過了這個範圍,會在堆中重新開闢乙個空間來儲存這個值 ,因此integer3 和integer4指向的不是同乙個記憶體位址,所以結果為false。

更詳細的點這裡 優美的講解equals和==的區別

和equals比較運算子

兩者使用時注意如下用法 1.當使用 來判斷兩個變數是否相等時,如果2個變數是基本型別的變數,且都是數值型 不一定要求資料型別嚴格形同 則只要兩個變數的值相等,將返回true 2.當使用 來判斷兩個引用型別的變數,必須它們指向同乙個物件時,才會返回true 3.string的equals方法判斷兩個字...

Java中 比較運算子和equals詳解

比較的是兩個基本資料型別的值是否相等,或者兩個物件的引用位址是否一樣。如下 public static void main string args 執行的結果為 true false true 原因 1 a和b都是基本資料型別,值也相等,所以 a b 為true 2 integer c 1000 是...

3 6 運算子 和equals 方法

對於基本資料型別來說,比較的是他們的值 值比較 int a 2 int b 3 int c 2 system.out.println a b false system.out.println a c true 對於引用資料型別來說,比較的是他們的引用 記憶體位址 person p1 new pers...