==和equals()的区别?
首先数据的表示有基本类型和引用类型。
== 基本类型比较值是否相同
引用类型比较的是地址是否相同
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
因为重写该方法,所以比较的值是否相等