1.== 是一个比较运算符,可以比较基本数据类型,也可以比较引用数据类型。 比较基本数据类型,比较的是两个值是否相等。 比较引用数据类型,比较的是两个对象的地址值是否相等。
public class Test {
public static void main(String[] args) {
int a=10;
int b=10;
int[] arr={1,2,3,4};
int[] arr1={1,2,3,4};
System.out.println(a == b); //比较的是内容 true
System.out.println(arr == arr1); //比较的是地址 false
}
}
2.equals方法是Object类的中的一个方法,只能比较引用数据类型,默认的比较方式是比较两个对象的地址值是否相同。但是有很多类,会重写这个equals()方法,按照他的比较方式去比较。比如自定义的类重写equals()方法,是去比较两个对象的成员变量的值是否相等。
public class Test2 {
public static void main(String[] args) {
Student s1 = new Student("张三", 23);
Student s2 = new Student("张三", 23);
System.out.println(s1 == s2); //比较的是地址值 false
boolean b = s1.equals(s2); //比较的是内容 true
System.out.println(b);
}
}
class Student2 {
private String name;
private int age;
public Student2() {
}
public Student2(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public boolean equals(Object o) { //Object o=s2
if (this == o) {
return true;
}
//s1.getClass()==s2.getClass() true s1.getClass()==dog.getClass(); false
//此处还可以用instanceof
if (o == null || this.getClass() != o.getClass()) {
return false;
}
//向下转型
Student2 student = (Student2) o;
// this.name.equals(s2.name);
return this.age == student.age && Objects.equals(this.name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
public class Test3 {
public static void main(String[] args) {
int a=10;
int b=10;
int[] arr={1,2,3,4};
int[] arr1={1,2,3,4};
System.out.println(a == b); //比较的是内容 true
System.out.println(arr == arr1); //比较的是地址 false
System.out.println(arr.equals(arr1)); //比较的是地址值(没有重写)
}
}
(小编也在努力学习更多哟!以后会多多分享哒!)
希望对友友们有所帮助!!!!