身份:一个变量与另一个变量拥有 相同的实例。相等性:两个不同的对象可以互换使用。它们通常具有相同的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。
身份意味着它是同一个对象实例,而相等意味着您要比较的对象是对象的不同实例,但恰好包含相同的数据。插图(在Java中)Date a = new Date(123);Date b = new Date(123);System.out.println(a==b); //falseSystem.out.println(a.equals(b)); //true因此,a和b是不同的实例(内存中的不同分配),但是在“数据”级别上,它们是相等的。