Java中equals ==

equals 与 == 都是比较对象的内存地址
我们举个例子这样比较直观。

Student student1 = new Student();

Student student2 = new Student();

System.out.println(student1.equals(student2));

System.out.println(student1 == student2);

不论是用的是哪一种方法 , 最终的结果显示的都是false,大家不妨可以试一下。为什么呢?就是因为他们比较的不是对象中字段的值或者说本身对象的值,而比较的是物理地址。

我们再来举一个例子。

String a = new String(“a”);

String b = new String(“a”);

System.out.println(a == b);

System.out.println(a.equals(b));

当我们创建2个String对象是 我们会发现 执行的结果是 false true。为什么这次euqals返回的值编程了true?因为此时equals方法不单单是比较物理地址 同时也比较了值,

String中 equals方法被重写 当物理地址不同时,会进一步比较值.

Student s1= new Student(“feifei”,18);
Student s2 = new Student(“feifei”,18);
s1.equals(s2) 返回false
现在想实现值相同就返回true:
现在来重写equals方法,来实现两个对象的比较(值相同便返回true)
if(object instanceof String){}
public Boolean equals(Object obj){
if (this ==obj){
return true;
}
if (obj instanceof student){
student s = (Student) obj;
if (!this.name.euqals(s.name)) return false;
if(this.age!=s.age) return false;
return true;
}
return false;
}

猜你喜欢

转载自blog.csdn.net/qq1195365047/article/details/80023859