"=="和"equals"的区别
“==”
1.如果对比的数据是基本数据类型,那么"=="比较的就是变量值
如果对比的数据类型是引用数据类型,那么"=="比较的就是地址值
例:
public class Test01 {
public static void main(String[] args) {
int a = 1; //基本数据类型
int b = 1; //基本数据类型
if(a==b){
System.out.println("true");
//两个基本数据类型比较,比较的是变量值,所以输出true
}else{
System.out.println("false");
}
//================================================================================
String s = new String("1"); //引用数据类型
String s2 = new String("1"); //引用数据类型
if(s==s2){
System.out.println("true");
/*两个引用数据类型比较,比较的是地址值,因为new了两个string对象 所以是两个地址值
,即使两string值都是"1", 但是对比的是地址值,所以输出false*/
}else{
System.out.println("false");
}
}
}
“equals”
1.equals比较的是引用数据类型,如果没有重写hashCode和equals方法,那么比较的就是地址值,因为Object的
equals方法使用的是"==",如果重写hashCode和equals方法,那么比较的就是重写后的规则,
例如:两个String类型的数据进行比较,那么比较的就是string 内容,因为string底层重写了equals方法,
规则是比较对内容进行比较,而不是地址值