==和equals的区别

Java基础部分

==和equals的区别是什么

首先浅谈一下==的用法:其用来判断两个变量是否相等,可以分为两种情况来看;
1.比较的两个变量是基本数据类型,只要数值相等,无需数值的类型也相同,则可认为两个变量相等,返回true。
2.比较的两个变量是引用类型,需要两个变量的地址相同,即指向同一个对象,则可认为两个变量相同,返回true。
注意:= =不可用于比较没有父子关系的两个对象,将发生编译错误。

再浅谈了= =的用法之后,可以分析一下equals的用法。在很多情况下,我们发现= =和equals并没有很明显的区别,这是什么原因导致的呢?
我们可以查看Object类中的equals方法

public boolean equals(Object obj)
{
   return (this == obj);
}

从这可以看出在Object类中的equals方法也是用==实现的,这也导致了我们在大多数情况下觉得两者你并没有什么态度的区别。
注意:String类中的equals方法进行了重写,只要两个字符串所包含的字符序列相同,则返回true,否则返回false。
由此可以看出equals方法是灵活多变的,它可以在我们需要的时候,进行任意形式的重写,但需遵循以下几种原则:
1.自反性:对任意的x,x.equlas(x)一定返回true;
2.对称性:对任意的x和y,x.equlas(y)和y.equlas(x)的结果一定相同;
3.传递性:对任意的x、y、z,x.equlas(y)返回true,y.equlas(z)返回true,则x.equlas(z)也一定返回true;
4.一致性:对任意的x和y,只要x和y的比较信息不发生变化,不管此方法调用多少次,结果都不应发生变化;
5.对任何不是null的x,x.equals(null)一定返回false。

==和equals的区别大致上如上所示,文章部分内容摘自《疯狂Java讲义》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值