1、请问为什么
aCat.equals(bCat) 输出false
f1.equals(f2) 输出true
是因为float类把equals重写了吗?
2、请问equals和==的区别?
aCat.equals(bCat) cat是一个对象,所以这段是比较两个对象是否相等(比较【对象】是否相等Java比较的是内存地址是否相等),你没有重写equals,所以调用的是Object的equals方法。
public boolean equals(Object obj) {
return (this == obj);
}
两个对象都是new出来的,内存地址不同 返回false。
f1.equals(f2)
Float是基本类型float的封装类,基本类型的封装类都会重写hashcode和equals,重写equals去比较数值是否相等。
public boolean equals(Object obj) {
return (obj instanceof Float)
&& (floatToIntBits(((Float)obj).value) == floatToIntBits(value));
}
所以f1和f2值相等 返回true