== 是运算符默认的是比较地址 可以与基本数据类型进行比较, 检测地址是否相等
equals是方法,不可以与基本类型比较 默认的是检测两个内容是否相等 当一个类没有重写equals方法时,默认的是object的equals方法此时和==比较是一样,(equals判定字符串判定的内容,)
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
输出结果:
true
true
s1和s2是相同的地址 equals的内容也相同
int a = 100;
int b = 100;
System.out.println(a == b);
输出:
true
equals不能比较基本数据类型 a与b相同会输出true
String s3 = new String("abc");
String s4 = new String("abc");
System.out.println(s3 == s4);
System.out.println(s3.equals(s4));
输出
false
true
s3和s4创建的对象肯定不是一个地址s3==s4输出false
s3与s4创建对象时的参数相同,equals为true
class Student{
private String name;
public Student(String name){
this.name = name;
}
//重写equals的方法
public boolean equals(Student obj){
return name.equals(obj.name);
}
}
Student stu1 = new Student("abc");
Student stu2 = new Student("abc");
System.out.println(stu1.equals(stu2));
输出:true
重写equals内容的比较,如果name相同则输出true