== 的作用
對于基本類型來說,它就是比較兩個變量的值是否相等;對于引用類型來說,它其實是在比較兩個引用變量是否引用的是同一塊堆記憶體空間,或者說是否指向同一塊堆記憶體空間
int a = 5;
int b = 5;
System.out.println(a==b); //true
String str1 = new String("abc");
String str2 = new String("abc");
String str3 = str1;
System.out.println(str1==str2); //false str1和str2分别指向不同的堆記憶體空間
System.out.println(str1==str3); //true 它們都是指向同一個的堆記憶體空間
equals 的作用
成員函數equals要稍微複雜一些,由于不同類中的equals的定義可能不同,是以其含義也可能不同。對于字元串類型,equals方法用來比較兩個字元串的内容是否相等
String str1 = new String("abc");
String str2 = new String("abc");
String str3 = str1;
System.out.println(str1.equals(str2)); //true
System.out.println(str1.equals(str3)); //true
注意: 如果一個自定義的類中沒有顯式地定義equals方法,那麼equals方法的作用與比較運算符 “ == ” 是一樣的,都是用來比較兩個變量是否指向同一個對象。
public class test{
test(){}
public static void main(String[] args){
test a = new test();
test b = new test();
test c = a;
System.out.println(a.equals(b)); //false
System.out.println(a.equals(c)); //true
}
}