public class Phone {
int screen=1;
public float a() {
float screen=1;
return screen;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Phone other = (Phone) obj;
if (screen != other.screen)
return false;
return true;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Phone phone1=new Phone();
phone1.screen=1;
Phone phone2=new Phone();
phone2.a();
if(phone1.equals(phone2))
System.err.println("两对象相同 phone1.screen:"+phone1.screen+" phone2.a():"+phone2.a());
else
System.out.println("两对象不相同 phone1.screen:"+phone1.screen+" phone2.a():"+phone2.a());
}
}
视频里老师说equals()方法里判断类型不同会返回false 但我这段代码不同类型也返回true 我哪里理解错了呢?
哦哦 我明白了 我两对象比较错了 if(phone1.equals(phone2))这里应该是 if(phone1.equals(phone2.a()))
我的想法是用equals()方法比较相同属性的成员变量与局部变量
经过测试 两对象确实是不同的 即使都是int类型也是不同的
不都是Phone类型吗,亲?