【Java】equals和==的区别
在面试中,经常会问到equals和==的区别
在JDK源码中,我们可以看到,在Object类上,equals本质上就是==

在这里就要思考一个问题?==的本质是什么
在《Java编程思想》一书中,对==的说明是:“关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系”。
也就是说,对于基本型(int double char byte short long float boolean),==会进行简单的值比较,如果值相等,则返回true
而对于对象(也就是引用型)来说,==会将两个对象的内存地址进行比较,如果两个对象的内存地址不同,就算值相同,也一样会返回false
可以这样理解:对于没有重写equals方法的类来说,equals本质上就是==,因为其调用了Object类的equals方法,但是equals通常会被重写为值比较

浙公网安备 33010602011771号