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
你自己创见的类如果没有重写equals方法,那么默认调用object的equals方法,而object的equals实现是==。
也就是比的地址。
两个new出来的类而盎然地址不一样。
至于float,它里面重写了equals方法,比的是真正的数值。
百度1s答案
百度1s答案