【Java】equals和==的区别

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

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

【Java】equals和==的区别_第1张图片

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

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

也就是说,对于基本型,==会进行简单的值比较,如果值相等,则返回true

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

总结:equals本质上就是==

那么问题来了,为什么在一些基本型的包装类上,使用equals是进行值比较呢?

因为基本型的包装类都对equals方法进行了重写,将引用比较改成了值比较。

你可能感兴趣的:(【Java】equals和==的区别)