equals和==的区别

202 阅读1分钟

== 是运算符,equals是方法

  • == 是运算符

    1. 用于基本数据类型变量和引用数据类型变量。

    2. 基本数据类型比较是 数据 是否相等。

      引用数据类型比较是 地址 是否相同,引用是否指向同一个对象。

              int a1 = 10;
              int a2 = 10;
              System.out.println(a1 == a2);/* true */
      
              int a3 = 10;
              char a4 = 10;
              System.out.println(a3 == a4);/* true */
      
              int a5 = 10;
              double a6 = 10;
              System.out.println(a5 == a6);/* true */
      
              int a7 = 10;
              short a8 = 10;
              System.out.println(a7 == a8);/* true */
      
              int a9 = 10;
              long a10 = 10;
              System.out.println(a9 == a10);/* true */
      
              Test test1 = new Test("a", 18);
              Test test2 = new Test("a", 18);
              System.out.println(test1 == test2);/* false */
      
              String str1 = new String("ggggg");
              String str2 = new String("ggggg");
              System.out.println(str1 == str2);/* false */
      
  • equals() 是方法

    1. 是方法不是运算符。

    2. 仅适用于引用数据类型。

    3. equals会被重写,不同类有不同的equals方法。大部分重写之后不再比较 地址 是否相同,而是比较 内容 是否相同。

    4. 和null比较永远都是false。

    5. 和类型不一样使用equlas比较,永远返回是false

    6. 编译器可以帮自定义类中自动生成equals方法,可以网上查找生成方法。

              String str1 = new String("ggggg");
              String str2 = new String("ggggg");
              System.out.println(str1.equals(str2));/* true */
      
              int a = 10;
              String b = new String("10");
              System.out.println(b.equals(a));/* false */
      
  • 面试题 : == 和 equals的区别

    个人答案:equals如果没有重写使用Object类中的方法,和==没有区别。

    ​ 如果重写的话,一般会有变化,比较的是内容是否相同