【Java】equals和==的区别

在面试中,经常会问到equals和==的区别

在JDK源码中,我们可以看到,在Object类上,equals本质上就是==

JDK中equals方法源码

在这里就要思考一个问题?==的本质是什么

在《Java编程思想》一书中,对==的说明是:“关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系”。

也就是说,对于基本型(int double char byte short long float boolean),==会进行简单的值比较,如果值相等,则返回true

而对于对象(也就是引用型)来说,==会将两个对象的内存地址进行比较,如果两个对象的内存地址不同,就算值相同,也一样会返回false

可以这样理解:对于没有重写equals方法的类来说,equals本质上就是==,因为其调用了Object类的equals方法,但是equals通常会被重写为值比较

posted @ 2020-08-09 22:43  枫叶藏在眼眸  阅读(168)  评论(0)    收藏  举报