面试经常被问到这个玩意儿,刚开始就看了一下区别,但是时间一长就忘了,所以这次我准备看一下源码,深刻理解一下到底是什么原因导致。
1、==是比较内存地址的,基本数据类型在栈内存里面,所以基本数据类型是用==来比较的,但是引用数据类型不在栈内存里面,像String可能在常量池,也可能在堆里面,String一般特殊,比较String时用的是equals
2、在搞清楚这个问题之前,先要知道Object类这个玩意儿,它是所有类的父类,它里面有很多方法,所有的类都是直接或者间接的继承Object类,所以都有它的方法,Object类中有一个equals方法