1. == 可以比较基本数据类型和引用数据类型
    2. 比较基本数据类型时 比较数值是否相等
    3. 比较引用数据类型时 比较地址值
    4. equals是方法 不是运算符
    5. equals只能用于引用数据类型比较
    6. Object类中的equals方法使用 == 比较(地址值比较)
    7. String、Date、File、包装类等重写了equals方法, 他们比较的是值是否相等 ```java // 基本数据类型

      1. // byte short int float double long char Boolean
      2. int a = 10;
      3. double b = 10.0;
      4. // 自动类型提升 a提升为10.0 值相等 输出true
      5. System.out.println(a == b);
      6. // 对象 引用数据类型
      7. Person p1 = new Person();
      8. Person p2 = new Person();
      9. // 引用数据类型 ==比较地址值; 因为在堆空间有两个Person 栈空间两个变量 变量地址值不同 输出false
      10. System.out.println(p1 == p2);
      11. // object类中的equals方法使用==比较 引用数据类型比较地址值是否相同 输出false
      12. System.out.println(p1.equals(p2));
      13. // 将p1变量的地址变更为p2的地址 此时两个变量指向同一个地址值 输出true
      14. p1 = p2;
      15. System.out.println(p1 == p2);
      16. String s1 = new String();
      17. // 将s2变量指向s1变量地址值
      18. String s2 = s1;
      19. s2 = "测试";
      20. // String类重写了equals方法 比较值(内容)是否一致 输出false
      21. System.out.println(s2.equals(s1));
      22. s1 = "哈哈";
      23. s2 = "哈哈";
      24. // 值相等 输出ture
      25. System.out.println(s2.equals(s1));

    ```