OOP中的身份和平等有什么区别?

OOP(面向对象编程)中的身份和相等之间有什么区别?


largeQ
浏览 358回答 3
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。

阿波罗的战车

身份确定两个对象是否共享相同的内存地址。相等确定两个对象是否包含相同状态。如果两个对象相同,则它们也相等,只是因为两个对象相等而死亡,并不意味着它们共享相同的内存地址。字符串有一个特殊情况,但是这是没有主题的,您需要询问其他人确切的工作方式;-)

PIPIONE

身份意味着它是同一个对象实例,而相等意味着您要比较的对象是对象的不同实例,但恰好包含相同的数据。插图(在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是不同的实例(内存中的不同分配),但是在“数据”级别上,它们是相等的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java