秋招
还有三天就要迎接2020年了,这一年经历了很多。作为准大四毕业生,从今年的9月份就开始准备了秋招,面试Java开发程序员,踩了很多坑,不过归根到底还是自己的专业知识贮备不够充分。这次主要是想要分享一下面试中经常会碰到的一个问题==和equals的区别。
==和equals的区别
当使用 == 来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数值类型(不一定要求数值类型严格相同),则只要两个变量的值相等,就将返回true。但对于两个引用引用变量类型,只有它们指向同一个对象时, == 判断才会返回true, == 不可用于比较类型上没有父子关系的两个变量。
equals()方法是object类提供的一个实例方法,因此所有引用变量都可以调用该方法来判断是否与其他引用变量相等。但使用这个方法判断两个对象相等的标准与使用 == 运算符没有区别,同样要求两个变量指向同一个对象才会返回true。因此这个object类提供equals()方法没有太大的实际意义,如果希望采用自定义的相等标准,则可采用重写equals方法来实现。
提示
String已经重写了Object的equals()方法,String的equals()方法判断两个字符串相等的标准是:只要两个字符串所包含的字符序列相同,通过equals()比较将返回true,否则将返回false。
注意
“equals()方法是判断两个对象的值相等”这种说法并不正确。什么叫对象的值呢?对象的值如何相等?实际上,重写equals()方法就是自定义相等的标准,你认为怎样是相等的,那就怎样是相等的,一切都可以自己做主!