为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我这里两对象不同类型相同属性的值用equals()方法判断是相同的呢?

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  我哪里理解错了呢?   

正在回答

2 回答

哦哦 我明白了  我两对象比较错了 if(phone1.equals(phone2))这里应该是 if(phone1.equals(phone2.a()))

我的想法是用equals()方法比较相同属性的成员变量与局部变量 

经过测试 两对象确实是不同的 即使都是int类型也是不同的

0 回复 有任何疑惑可以回复我~

不都是Phone类型吗,亲?

0 回复 有任何疑惑可以回复我~
#1

青柳_ 提问者

我两个screen 一个是int类型 一个是float类型 怎么会一样呢
2018-08-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我这里两对象不同类型相同属性的值用equals()方法判断是相同的呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信