浅谈equals方法

作者: 一只很懒很懒的虫 | 来源:发表于2018-03-16 00:21 被阅读13次

          在java的Object类中,它是属于所有java类的基类。

          equals的方法实现就是很简单的比较两个变量的地址值是否相等。即用==来判断。

          在实际中如果要判断两个对象的内容是否相等,比如Cat c=new("aa",1)  Cat b=new("aa",1)按道理说这两个被new出来的对象地址肯定不相同的。如果没有重写该类的equals方法,则c.equals(b)输出为false。

          如果想要让它们因为内容相同而返回为true,那就需要重写该类的equals方法。具体的写法就是首先的判断传入的这个对象是否属于这个类。然后就是this.某个属性和传入对象的某个属性两者的内容是否一致了。一般属性都是基本数据类型,所以直接用==就好了,如果存在其中不是基本数据类型的话直接调用它的equals方法比较即可。比如string类型。这样就可以判断对象内容相等的问题了。

            这边顺便说说==比较的其实就是该变量的hashcode返回的值。所以如果当你的hashcode的计算方式改变的话那么==的意义也将改变。

            有些类java已经把它们写死了,所以无法重写hashCode和equals方法。而自己自定义的类完全可以根据自己的需要去定义。

          补充一点为什么重写equals方法的时候一定要重写hashcode方法呢。因为事实上new出的两个对象它们的hash值一定是不相等的。但是一般而言,因为判断两个对象是否相等如果用equals比较的话,要比较很多次,而如果直接计算hash值会更快速。只有在hash相等的情况下equals比较才有意义,所以在重写eqsuls的时候也要重写hashcode。

    相关文章

      网友评论

        本文标题:浅谈equals方法

        本文链接:https://www.haomeiwen.com/subject/fcokqftx.html