面试题:==和 equals 的区别
一、回顾==的使用
==,运算符
1、== 既可以比较基本类型也可以比较引用类型。
2、如果比较的是基本类型,比较两个变量保存的数值是否相等。(不一定类型相同)。
如果比较的是引用类型,比较的是两个对象的地址值是否相等,即两个引用是否指向同一对象实体。
二、equals();方法的使用
1、是一个方法,而非运算符。
2、只适用于引用数据类型
3、Object类中equals()定义
public boolean equals(){
return (this = obj);
}
说明:Object类中定义的equals()和==的作用是相同的,比较的是两个对象的地址值是否相等,
即两个引用是否指向同一对象实体。
4、像String、Data、File、包装类等都重写了Object类中的equals()方法,重写以后,比较的就不是两个引用的地址是否相等,而是比较两个对象的“实体内容”是否相等。
5、通常情况下,我们自定义的类,如果使用equals()方法的话,也通常比较两个对象的“实体内容”是否相等, 那么我们就需要对Object类中的equals()进行重写。
重写的原则:比较两个对象的实体内容是否相同。