zoukankan      html  css  js  c++  java
  • 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比较看调用此方法的对象的实现而定。


      

  • 相关阅读:
    TortoiseGit 合并主分支代码.pull request
    MVC EF 修改某些值
    MVC 提交表单
    MVC 统计之 自定义 列表
    MVC 起始页修改 区域
    asp.net C# MVC DropDownList
    asp.net C# MVC 提交表单后清空表单
    Python 线程启动的四种方式
    Git 命令的学习
    Node.js v10.1.0 Documentation
  • 原文地址:https://www.cnblogs.com/hbxblogs/p/2474712.html
Copyright © 2011-2022 走看看