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

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

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

largeQ 2019-12-27 14:56:52
OOP(面向对象编程)中的身份和相等之间有什么区别?
查看完整描述

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。


查看完整回答
反对 回复 2019-12-27
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

身份确定两个对象是否共享相同的内存地址。相等确定两个对象是否包含相同状态。


如果两个对象相同,则它们也相等,只是因为两个对象相等而死亡,并不意味着它们共享相同的内存地址。


字符串有一个特殊情况,但是这是没有主题的,您需要询问其他人确切的工作方式;-)


查看完整回答
反对 回复 2019-12-27
?
PIPIONE

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是不同的实例(内存中的不同分配),但是在“数据”级别上,它们是相等的。


查看完整回答
反对 回复 2019-12-27
  • 3 回答
  • 0 关注
  • 355 浏览

添加回答

举报

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