首先遇到==和equals的区别的问题想到的一定是==比较的是内存中对象存放地址用来判断两个对象的地址是否相同,即是否指向同一个对象。而equals比较的是对象的内容是否相同,但这个说法显然是不够严谨的。
在java中由于所有的类都继承于Object类,可以看到源码中equals的代码
显然在equals不被重写时equals的作用与==是相同的,而对于String、Integer等进行equals操作时,是因为本身已经被重写。
总结:对于equals和==区别更严谨的说法应为,当equals不被重写的时候与==的作用是一样的,因为在Object类中equals返回的为==比较的结果,而对于equals重写之后则与==不同, ==比较的为实际的内存地址,而equals则为重写实际比较的内容。