==

== 需要从基本数据类型 ,引用数据类型 两方面去说

  • 在基本数据类型中,== 比较的是内存中的具体数值
    此处需要注意一些自动类型提升,例如
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