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比较看调用此方法的对象的实现而定。


      

  • 相关阅读:
    C#for循环——迭代法、穷举法
    C#循环语句
    C#算数运算符、关系运算符、逻辑运算符、语句
    C#visual2012基本操作、数据类型、类型转换
    C#进制转化
    Ajax用法
    《四》JAVA 字符输入输出流
    《三》Java IO 字节输入输出流
    《二》Java IO 流的分类介绍
    《一》File 类的介绍
  • 原文地址:https://www.cnblogs.com/hbxblogs/p/2474712.html
Copyright © 2011-2022 走看看