==
==
需要从基本数据类型
,引用数据类型
两方面去说
- 在基本数据类型中,
==
比较的是内存中的具体数值
此处需要注意一些自动类型提升,例如
char a = 'A';
int b = 64;
a==b; //true
- 在引用数据类型中,
==
比较的是内存地址,换句话说就是在内存中是不是同一个对象
equals()
equals()
需要从是否重写equals()
方法来说明
equals()
方法是继承于Object
中,基础数据类型没有继承Object
对象,所以就没有equals()
一说,引用数据类型默认都是继承于Object
对象的,所以都带有equals()
方法- 自定义的类
- 如果没有重写
Object
中的equals()
方法,则默认使用Object
中的equals()
方法,Object
中的equals()
方法内部就是==
,所以比较的是地址值; - 如果重写了
Object
中的equals()
方法,则需要根据自定义的规则去判断
- 如果没有重写
- 部分系统自带的类,默认已经重写了
equals()
方法,如String
,File
等