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。