==和equal区别

是什么
==equal都是用于比较相等的,但是对象不同,会产生不同的结果。
==对比的是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址。
equals:object中默认也是采用==比较,通常会重写。
为什么
==在C语言就有,很明显,这是一种运算符,和+、-一样,是程序在汇编时来实现的,是底层的实现。通过==,我们就可以比较两个寄存器的值了,这不需要任何语言来实现。
但是后来有了equal,为什么要实现equal呢?大家都知道,对象之间的比较,是人的一种思维,并不是机器可以做到的。、因此就需要equal了。它来帮助我们实现我们的想法。
怎么用
==是不是就不可以比较对象了呢?当然可以。但是作为基础运算符,只能比较寄存器层面的内容。那么对象的寄存器是什么呢?那就是对象的引用地址了。因此==对于基本数据类型,是比较数值的,对象则是比较引用地址,即是否在内存地址的引用上是同一对象。
equal则是在Object中实现的。那么去Object类中看看,,里面只有一个==,很明显,equal要我们自己重写了,也就是说,equal==其实是同一个东西,而且JAVA也没有帮我们实现,就规定了一个名字(哼)。那么equal的使用就一个要点:==我们要自己重写!。

posted @ 2021-08-19 17:29  快乐的海盗  阅读(492)  评论(0编辑  收藏  举报