Java中的equals()和==比较是个基础问题,之前在项目中也犯过错,简单对比一下。
1.Object类的equals()和==
也就是如果object1.equals(object2)为true,那么object1和object2实际引用的是同一个对象。
2.String类的equals()和==比较
String类重写了equals()方法,对比是字符串包含的内容是否相同。可以看一下String的源码。
如图我们可以看到,String中equals()是对内容的比较,通过char数组一位一位去比较是否相同。
举个栗子:
3.非字符串类变量的equals()和==比较
再举个栗子:
可以看到,返回的都是false
如果也只想比较值的话,可以重写Person类的equals方法。
结果:
4.基本数据类型==
基本类型比较,那么只能用==来比较,没有equals方法
5.基本类型的包装类型的equals()和==比较
看一下Integer的源码
最后一个栗子:
6.小结
1、对于基本数据类型,==比较的是两者的值是否相等
2、对于引用数据类型
但是String类中的.equals()方法重写了,比较的是两个引用对象的内容是否想同。
7.参考文献
https://blog.csdn.net/andyzhaojianhui/article/details/75176807
https://blog.csdn.net/g_66_hero/article/details/71081315
欢迎阅读、订阅、转载、收藏