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


      

  • 相关阅读:
    poj 3068 Bridge Across Islands
    XidianOJ 1086 Flappy v8
    XidianOJ 1036 分配宝藏
    XidianOJ 1090 爬树的V8
    XidianOJ 1088 AK后的V8
    XidianOJ 1062 Black King Bar
    XidianOJ 1091 看Dota视频的V8
    XidianOJ 1098 突击数论前的xry111
    XidianOJ 1019 自然数的秘密
    XidianOJ 1109 Too Naive
  • 原文地址:https://www.cnblogs.com/hbxblogs/p/2474712.html
Copyright © 2011-2022 走看看