- == 可以比较基本数据类型和引用数据类型
- 比较基本数据类型时 比较数值是否相等
- 比较引用数据类型时 比较地址值
- equals是方法 不是运算符
- equals只能用于引用数据类型比较
- Object类中的equals方法使用 == 比较(地址值比较)
String、Date、File、包装类等重写了equals方法, 他们比较的是值是否相等 ```java // 基本数据类型
// byte short int float double long char Boolean
int a = 10;
double b = 10.0;
// 自动类型提升 a提升为10.0 值相等 输出true
System.out.println(a == b);
// 对象 引用数据类型
Person p1 = new Person();
Person p2 = new Person();
// 引用数据类型 ==比较地址值; 因为在堆空间有两个Person 栈空间两个变量 变量地址值不同 输出false
System.out.println(p1 == p2);
// object类中的equals方法使用==比较 引用数据类型比较地址值是否相同 输出false
System.out.println(p1.equals(p2));
// 将p1变量的地址变更为p2的地址 此时两个变量指向同一个地址值 输出true
p1 = p2;
System.out.println(p1 == p2);
String s1 = new String();
// 将s2变量指向s1变量地址值
String s2 = s1;
s2 = "测试";
// String类重写了equals方法 比较值(内容)是否一致 输出false
System.out.println(s2.equals(s1));
s1 = "哈哈";
s2 = "哈哈";
// 值相等 输出ture
System.out.println(s2.equals(s1));
```