“==” 和 equals() 的区别
“==” 和 equals()的区别是在面试中经常会被问到的一个问题,在这首先说下他们两个最本质的区别:
1、“==“
”==“ 比较既可以比较基本数据类型又可以比较引用类型;其中基本数据类型比较的是值,引用类型比较的是地址值。
2、equals(Object o)
equals(Object o) 不能比较基本数据类型,基本数据类型不是类类型;
3、equals(Object o)详解
equals(Object o) 是Object类中的方法,所以,在每一个java类中,都会有这个方法,因为每一个java类都是直接或者间接的Object类的子类,会继承到这个方法。
(1) 如果没有重写equals方法,equals(Object o)比较引用类型时(该方法继承自Object,在object中比较的是地址值)等同于”==”;
(2) 如果自己所写的类中已经重写了equals方法,那么就安装用户自定义的方式来比较俩个对象是否相等,如果没有重写过equal方法,那么会调用父类(Object)中的equals方法进行比较,也就是比较地址值。
4、总结
(1)如果是基本数据类型那么就用==比较
(2)如果是引用类型的话,想按照自己的方式去比较,就要重写这个类中的equals方法,
如果没有重写,那么equals和==比较的效果是一样的,都是比较引用的地址值。
(3)如果是比较字符串,那么直接用equals就可以了,因为String类里面已经重写了equals方法,
比较的时候字符串的内容,而不是引用的地址值了。