既可以比較基本資料型別也可以比較引用資料型別,對於基本資料型別比較的就是本身的資料值是否一致,對於引用型別就是比較堆記憶體中的位址值是否一致。
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...