3 回答
TA贡献1712条经验 获得超3个赞
身份:一个变量与另一个变量拥有 相同的实例。
相等性:两个不同的对象可以互换使用。它们通常具有相同的ID。
身分识别
例如:
Integer a = new Integer(1);
Integer b = a;
a与相同b。
在Java中,使用来测试身份==。例如,if( a == b )。
平等
Integer c = new Integer(1);
Integer d = new Integer(1);
c与相等但不相同d。
当然,两个相同的变量总是相等的。
在Java中,相等性是由equals方法定义的。请记住,如果实现equals,则还必须实现hashCode。
TA贡献1862条经验 获得超6个赞
身份确定两个对象是否共享相同的内存地址。相等确定两个对象是否包含相同状态。
如果两个对象相同,则它们也相等,只是因为两个对象相等而死亡,并不意味着它们共享相同的内存地址。
字符串有一个特殊情况,但是这是没有主题的,您需要询问其他人确切的工作方式;-)
TA贡献1829条经验 获得超9个赞
身份意味着它是同一个对象实例,而相等意味着您要比较的对象是对象的不同实例,但恰好包含相同的数据。
插图(在Java中)
Date a = new Date(123);
Date b = new Date(123);
System.out.println(a==b); //false
System.out.println(a.equals(b)); //true
因此,a和b是不同的实例(内存中的不同分配),但是在“数据”级别上,它们是相等的。
添加回答
举报