首先數據的表示有基本類型和引用類型。
== 基本類型比較值是否相同
引用類型比較的是地址是否相同
1 String a = new String("123"); 2 String b = new String("123"); 3 if(a==b) { 4 System.out.println("true"); 5 }else { 6 System.out.println("false"); 7 }
結果:false
因為地址不同
1 String a = "123"; 2 String b = "123"; 3 if(a==b) { 4 System.out.println("true"); 5 }else { 6 System.out.println("false"); 7 }
結果:true
a和b都指向常量池同一個“123”,所以地址相同。
equals()
只能比較引用類型,默認情況下比較的是地址值是否相同。
但在一些類中重寫了這個方法,如包裝類,String,Date等,equals()比較的是兩個變量的值。
1 String a = new String("123"); 2 String b = new String("123"); 3 if(a.equals(b)) { //equals 4 System.out.println("true"); 5 }else { 6 System.out.println("false"); 7 }
結果:true
因為重寫該方法,所以比較的值是否相等