如何“记住”equals()和==的区别?

本文详细解释了Java中equals方法的工作原理及其与==运算符的区别。介绍了Object类中的equals方法默认行为,并展示了String类如何重写equals方法来比较字符串内容而非引用。

==是运算符

equals()方法是Object类的方法,Object类是所有类的父类,所以,所有的对象都有equals()方法。

如果类没有重写继承自Object的equals()方法,则代码如下: 输入图片说明

可见,默认的equals()方法内部是使用==运算符判断是否equal的。

Java里的equals()方法实际上是交给开发者去覆盖重写的,让开发者去定义满足什么条件的两个Object是equal的。

例如String类重写的equals()方法: 输入图片说明

总结:

  1. 比较对象是值变量,用==判断相等性。 1.比较对象是引用型变量,使用==,判断引用所指的对象是否是同一个,比较的是变量句柄地址。如果对象没有重写equals()方法,使用equals()方法判断和==是一样的,但是如果重写了equals()方法,比较结果就和equals()具体实现相关了。
  2. 两个String类型的变量进行比较,equals()比较的是两个字符串对象是否包含相同的内容,==比较的是这两个字符串是否是同一个。
  3. 字符串的比较实用equals()代替==操作符。
  4. Integer和Long等包装类因为有缓冲机制,才保证引用一致。

转载于:https://my.oschina.net/u/3672057/blog/1536180

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值