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


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)=false

c1.hashCode=366712642

c2.hashCode=1829164700


qq_时光流逝而去_1
浏览 1699回答 4
4回答

肥冰

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

慕粉3681430

肯定是false啊,这个equals是值和hashCode都相等才为true.字符串如果不new创建的话,只要值相等,就指向同一个.所以虽然引用不同但是相等,因为本来就是自己和自己比
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java