美文网首页
面试题(二)2020年2月28日

面试题(二)2020年2月28日

作者: 别点了填写不了昵称 | 来源:发表于2020-02-28 15:27 被阅读0次

Java 中的 equals 和 == 的区别

为了探究两者的关系,我们从 Java 中的数据类型开始谈起:

  1. JDK 中规定了两种数据存放的位置,堆和栈。
    我们常说的基本数据类型是放在栈内的。而对象是放在堆内。在Java中,只有特定的类型可以放在栈上,比如咱们刚才说到的基本数据类型。放在堆上的内容,在栈上都有一个地址指针,对应着放着对象的堆内存地址。
  2. 所有的 equals 方法都是继承自 Object 类
    在Java API 文档中,我们找到 Object 类的 equals 方法


    Object 的equals 方法

    Java 文档中说,Eques方法在非空对象引用上实现等价关系。并举了4个例子

  • It is reflexive :也就是非自身的,就是x.equals(x) 返回的是true。
  • It is symmetric:这个就是说引用也是相同的。 x 引用 y ,则x.equals(y) 和 y.equals(x) 返回值为true。
  • It is transitive:与上一条相同,连续的引用也是返回true。比如 x 引用 y,y 引用 z。
  • It is consistent:无论多次引用,只要不改变里面的值,无论引用多少次都是返回true。
    非空的x ,x.equals(null) 返回false。

这里,我们知道了equal函数的大致作用了,就是为了判断,传入的参数到底是不是我自己。

那么就清晰明了了
也就是说,要先和自己相比。然后是看是不是自己的实例,在比较值。


Boolean 的 equals 方法
String 的 equals 方法

聪明的大家肯定看到了,为什么String 的 equals方法有判断 this == anObject 而 Boolean 没有。
因为 String 有空构造函数,而 Boolean没有空构造函数。所以,Boolean 每创建一个实例,就是一个新的实例,肯定不等于自己,而 String则不然。


String 无参构造器
Boolean 构造器
  1. 看到这里,我们发现,所有对象的equals方法都用到了==
    那么聪明的你也踩到了==是用来判断他们的内存地址和所存的 values 是否在值上相同。

相关文章

  • Java面试题汇总

    Java面试题总结 Java面试题总结一Java面试题总结二

  • Android面试题

    Android面试必备: (一)、Java面试题 (二)、Android面试题 (三)、Android高级面试题

  • 前端面试题2022年前端面试题

    一、HTML面试题 二、CSS面试题 三、JavaScript面试题 四、H5/C3面试题 五、ES6面试题 六、...

  • 剑指offer 34-66题

    面试题34:二叉树中和为某一值的路径 面试题35:复杂链表的复制 面试题36:二叉搜索树与双向链表 面试题37:序...

  • 网易面试题二

    网易面试题二

  • iOS最新面试题汇总(四)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(三)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(一)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(二)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • 分享美团、滴滴、阿里、京东的 Dubbo / JVM / Spr

    一,阿里巴巴面试题 二,京东面试题 三,美团面试题 四,滴滴面试题 五,本次卧底面试得到的结论 通过面试题来看,可...

网友评论

      本文标题:面试题(二)2020年2月28日

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