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

为什么两个对象c1和c2的值相等但是c1.equals(c2)是false,且他们的hash码也不一样

为什么两个对象c1和c2的值相等但是c1.equals(c2)是false,且他们的hash码也不一样

qq_时光流逝而去_1 2017-03-16 21:29:33
public class TextComplexNumber { public static void main(String[] args){ // TODO Auto-generated method stub//创建复数c1=2.0+4.0i ComplexNumber c1=new ComplexNumber(2,4); ComplexNumber c2=new ComplexNumber(2,4); System.out.println("c1+c2="+c1.add(c2)); System.out.println("c1/c2="+c1.divide(c2)); //equals方法:比较两个对象是否相等,结果为boolean System.out.println("c1.equals(c2)="+c1.equals(c2)); //hashCode方法:获得对象的hash码,结果为int类型 System.out.println("c1.hashCode="+c1.hashCode()); System.out.println("c2.hashCode="+c2.hashCode()); }}控制台显示的结果为:c1.equals(c2)=falsec1.hashCode=366712642c2.hashCode=1829164700
查看完整描述

4 回答

?
肥冰

TA贡献101条经验 获得超60个赞

因为你没有复写object类的equals方法,默认比较方法为:equals 方法在非空对象引用上实现相等关系,意思是要指向非空两个对象引用同一个对象才会返回true,同理哈希码亦如此。
查看完整回答
反对 回复 2017-03-17
?
慕粉3681430

TA贡献8条经验 获得超0个赞

肯定是false啊,这个equals是值和hashCode都相等才为true.字符串如果不new创建的话,只要值相等,就指向同一个.所以虽然引用不同但是相等,因为本来就是自己和自己比

查看完整回答
反对 回复 2017-03-16
  • 4 回答
  • 0 关注
  • 1698 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信