equals 这样写吗?

来源:9-9 Java 中的 Object 类 Ⅱ

刘旺

2016-03-19 14:48

对不对啊?

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回答

  • 落魄流浪汉_
    2016-03-19 15:41:46

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

    刘旺

    如果不重写子类中的equals方法,比较的就是是否指向同一对象,也就是比较内存,这个时候就是相当于"==",重写后可以比较属性的值是否相同,是这样理解吗?

    2016-03-19 16:20:38

    共 1 条回复 >

  • qq_太阳_17
    2016-03-19 15:30:31

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

    刘旺

    噢,厉害!我是想了解equals的使用方法,这节课看了好几遍。。

    2016-03-19 16:21:58

    共 1 条回复 >

Java入门第二季 升级版

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

530560 学习 · 6091 问题

查看课程

相似问题