”==“是比较的内存地址,无论是数据类型还是引用类型的,都是指向存放的处,也就是java中存放他们的”库房“地址,
”==“比较的就是它在哪个位置,占的位置是否一样?
而equals比较的是值, 基本数据类型不能进行equals的比较,只有它们的包装类可以进行equals比较,比较的是它是什么?
上图,基本数据类型 名称和地址都是同出一处 引用数据类型指向从方法区返回的内存地址
”==“比较的是方法区的占位是否是一处, equals比较的是方法区中的内容是否是一样的值(包含特殊情况!)
特殊情况!
像String、Integer等类对equals进行了重写,但是没有对equals进行重写的类(比如我们自己写的类)就只能从Object类中继承equals方法,其equals方法与==就也是等效的,除非我们在此类中重写equals。详情百度不深步研究
文章因个人感悟,如有问题,请欢迎随意吐槽,来者不拒,贬损的更加热烈欢迎~