• Java中 ==和equals 的区别


        我开始接触Java的时候,总是分不清==和equals他们有什么区别,他们比较的是什么。看了圣思园张龙老师的视频学习,跟着他剖析源才慢慢明白。

        我现在理解的 ==和equals:

        ==

       比较的是两边的值,不管两边是原生数据类型还是引用数据类型,比较的是他们的值。

       对原生数据类型而言,==比较的是他们所包含的值。

       而对引用类型而言比较的是他们引用的对象的地址是否相同,如果地址相同则两边为同一个对象。

      

       equals

       equals比较的内容不一定,根据每个类对equals的实现而定(不知道这样说对不对,现在是这样认为的,通过两个例子来印证我的想法)。

       equals方法源于object类,他处于所有对象继承体系最顶层,也就是说所有对象都有equals方法。

       object对象对equals方法的实现是(参考原代码):

     

        object底层是用 == 来实现equals方法,也就是说类在没有重写equals方法的前提下,equals方法和==功能相同。

        String的equals方法是我们经常用到的方法,它的equals方法也有不同(参考原代码):

      

         String的equals方法是先用 == 比较两个是否为同一个对象,如果是则返回true,不是还会进一步比较,比较两边的String对象的内容是否相等,如果相等则返回true,否则false。

         总结: ==比较两边的值,equals比较看调用此方法的对象的实现而定。


      

  • 相关阅读:
    我谈编程语言竞争
    从基础学起----xuld版高手成长手记[1]
    自己动手开发语言.笔记@2014-1-13
    删除 QQ 最新版右键菜单 通过QQ发送文件到手机
    客观评价C#的优点和缺点
    一个会做你就是高手的问题
    计划开发的语言及一些细节求吐槽
    面向接口设计思想
    计划添加的复杂语法
    面向对象中的设计陷阱
  • 原文地址:https://www.cnblogs.com/hbxblogs/p/2474712.html
Copyright © 2020-2023  润新知