==和equals方法


Java程序中測試兩個變量是否相等有兩種方式:一種是利用==運算符,另一種是利用equals方法。

當使用==運算符來判斷兩個變量是否相等時,如果兩個變量是基本類型變量,且都是數值類型(不一定要求數據類型嚴格相同),則只要兩個變量的值相等,就將返回true。

但對於兩個引用類型變量,它們必須指向同一個對象時,==判斷纔會返回true。==不可用於比較類型上沒有父子關係的兩個對象。下面程序示範了使用==來判斷兩種類型變量是否相等的結果。

public class EqualsTest {
	public static void main(String args[]){
		int it = 65;
		float fl = 65.0f;
		//將輸出true
		System.out.println("65和65.0f是否相等?\n " + (it==fl));
		char ch = 'A';
		//將輸出true
		System.out.println("65是否和'A'相等?\n " + (it==ch));
		String str1 = new String("hello");
		String str2 = new String("hello");
		//將輸出false
		System.out.println("str1和str2是否相等? \n" + (str1 == str2));
		//將輸出true
		System.out.println("str1是否equals str2? \n" + str1.equals(str2));
	}
}
運行上面的程序,將輸出如下結果:

65和65.0f是否相等?
 true
65是否和'A'相等?
 true
str1和str2是否相等? 
false
str1是否equals str2? 
true

可以看到,65、65.0f和'A'相等。但對於str1和str2來說,因爲它們都是引用類型變量,它們分別指向兩個通過new關鍵字創建的String對象,因此str1和str2兩個變量不相等。
equals方法是object類提供的一個實例方法,因此所有引用變量都可調用該方法來判斷是否與其他引用變量相等。但是用這個方法判斷兩個對象相等的標準與==運算符沒什麼區別,同樣要求兩個引用變量指向同一個對象纔會返回true。


發佈了21 篇原創文章 · 獲贊 7 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章