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

equals 这样写吗?

对不对啊?

package com.Imooc01;

public class Initail {

public static void main(String[] args) {

Iphone iphone6=new Iphone();

Iphone iphone6s=new Iphone();

if(iphone6.equals(iphone6s)){

System.out.println("两个对象是相同的");

}else{

System.out.println("两个对象是不相同的");

}

}

}



package com.Imooc01;

public class Telphone {

float screen=5.0f;

float cpu=1.4f;

float mem=2.0f;

}


package com.Imooc01;

public class Iphone extends Telphone {

float screen=5.0f;

float cpu=1.4f;

float mem=2.0f;

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + Float.floatToIntBits(cpu);

result = prime * result + Float.floatToIntBits(mem);

result = prime * result + Float.floatToIntBits(screen);

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Iphone other = (Iphone) obj;

if (Float.floatToIntBits(cpu) != Float.floatToIntBits(other.cpu))

return false;

if (Float.floatToIntBits(mem) != Float.floatToIntBits(other.mem))

return false;

if (Float.floatToIntBits(screen) != Float.floatToIntBits(other.screen))

return false;

return true;

}

}


正在回答

2 回答

equals只能比较值是否相等。“==”是比较内存是不是相等,也可用作判断是否指示同一对象

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

刘旺 提问者

如果不重写子类中的equals方法,比较的就是是否指向同一对象,也就是比较内存,这个时候就是相当于"==",重写后可以比较属性的值是否相同,是这样理解吗?
2016-03-19 回复 有任何疑惑可以回复我~

浮点数的比较    你这样可以 也可以使用浮点数相减小于某一个精度 也可以

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

刘旺 提问者

噢,厉害!我是想了解equals的使用方法,这节课看了好几遍。。
2016-03-19 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530560    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

equals 这样写吗?

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