学习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有一些帮助。