Java中的==和equals

学习java有一段时间了,并且参加了工作。但是对于基础学习的时候也就是草草了之,最近终于有时间和心境学习一些知识在粗略的学习了C语言之后深深的体会到了JAVA的便捷

所以又想重新温习一下Java基础,重新看了张龙老师的JavaSE基础。关于==和equals已经是老生常谈了但是通过又一遍的复习我有了一点自己的看法,便于初学者理解。

很多书上说==对于基本数据类型是判断值是否相等,对于引用数据类型是判断引用的是否是同一个对象。这么说原本没有任何错误,但是对于初学者就有些晦涩难懂。难道一个符号真的有这么智能还能判断数据类型?其实原本没有那么复杂,对于基本数据类型很好理解,基本数据类型中保存的就是它的值,而引用数据类型中保存的是引用数据类型的地址。这点随便new 一个对象打印一下这个变量就可得知,而==做的就是比较2个对象中保存的地址是不是同一个值,本质上做的还是比较值的操作。

我们在来说说equals,equals就是用来处理特殊的比较情况的方法。因为equals本来是定义在Object中的方法,在Object类中的实现是return this==Obj就是用==来判断。Java中所有类都继承了Object所有所有类都有默认的equals方法。这个方法有什么用呢?我个人理解就是在解决特殊的相等判断的时候就重写这个方法。比如一个Student对象在id属性相同的时候视作同一个学生,为了实现这个比较就应当重写equals方法和hashcode方法。在String类中JDK已经为我们做出了榜样。好了今天就分享到这里希望能对跟我一样的new commer有一些帮助。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值