刚学Java的时候是这么认为的:
啊~那个,equals用来比较值是否相等,==用来比较地址
错了吗?大错特错!
分开来说一下
==
基本数据类型:两个变量保存的数值是否相等(不同类型会隐式转换)
引用数据类型:比较两个引用是否指向同一个对象实体(地址是否相同)(两边必须类型相同)
equals()
只能用在引用数据类型
默认java.lang.Object中的equals()使用的是==,所以在引用数据类型没有重写equals()的情况下与==的作用是一样的:
public boolean equals(Object obj) {
return (this == obj);
}
String, Date, File, 包装类都重写了equals()方法,一般重写以后,比较的是两个对象中的内容是否相同。