Java中equals和==的那些事

今天再复习的时候,老师特意讲解了一下Java当中的equals以及==这两者的区别,通过老师的讲解以及自己的理解,更正了自己以前的很多错误,下面自己做下记录,为以后的回顾打好基础。
老师给的PPT
正如文中所说,equals方法是Object类当中的一个方法,又来比较两者之间的关系。因为所有的类都是Object的直接子类或者间接子类,所以每个类都能够使用上equals这个方法。下面,附上一张Java源码当中Object类中的equals方法的详细代码
Java中的源码
可以看出,equals方法在没有经过重写的时候是使用的 == 进行判断的,它比较的就是两者之间的引用类型。(在我而言,就是比较的两者在内存中的地址)。所以,在没有重写equals方法的时候,这个方法和==的作用效果是一样的。然后==用于比较基本数据类型(byte、short、int、long、float、double、char、boolean)时可以当作是算数符号,就跟比较值的时候是一样的。然后==不仅仅能够比较基本数据类型,比较起引用类型也是可以的。下面是我简单写的一个例子:
自己的测试例子
可以看到,执行==过后是打印的二者不想等。这是因为什么?因为new。只要你是new的一个新的对象,那么系统将自动为你在内存中新分配一块地址,那么==判断引用类型的时候就会发现二者的地址是不一样的。所以二者会被判定为不相等。然后我们进行equals方法进行判断。因为String类中是自己重写了equals函数(这里我不再赘述,请读者自行查看源码),所以判定二者在内容上是相等的。
好了,这就是今天大概纠正的地方,希望对大家也有点帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值