Java ==和equals的区别

Posted coder1999

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java ==和equals的区别相关的知识,希望对你有一定的参考价值。

首先了解默认equals方法实现代码

public boolean equals(Object obj) {
    return (this == obj);
}

1.==

   (1)对于基本数据类型的变量,"=="的作用是判断左右两边的值是否相等

public class HelloWorld {
  public int HW=10;
  public static void main(String[] args)
  {
  int a=10;
  int b=10;
  System.out.println(a==b); //ture
  }
}

   (2)对于引用类型的变量,"=="的作用是判断左右两边所指向的地址是否一样

public class HelloWorld {
  public int HW=10;
  public static void main(String[] args)
  {
  HelloWorld a=new HelloWorld();
  HelloWorld b=new HelloWorld();
  System.out.println(a==b); //false
  }
}

2.equals()

  (1)根据equals()的实现代码可知equals()不适用于基本数据类型之间,对于引用类型的变量则和"=="结果相同

public class HelloWorld {
    public int HW=10;
  public static void main(String[] args)
  {
  HelloWorld a=new HelloWorld();
  HelloWorld b=new HelloWorld();
  System.out.println(a.equals(b)); //false
  }
}

  (2)如果对equals()方法进行了重写,那么就是对比值是否相等。

public class HelloWorld {
    public int HW=10;
    @Override
 public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    HelloWorld other = (HelloWorld) obj;
    if (HW != other.HW)
        return false;
    return true;
}
 public static void main(String[] args)
  {
      HelloWorld a=new HelloWorld();
      HelloWorld b=new HelloWorld(); 
      System.out.println(a.equals(b)); //true
  }
}

ps: 我使用的是eclipse提供的重写。

 技术图片

以上是关于Java ==和equals的区别的主要内容,如果未能解决你的问题,请参考以下文章

java 中 “==” 和 equals 的区别

Java ==和equals的区别

Java ==和equals有什么区别?

Java 中 equals 和 == 的区别

如何重构这个 Java 代码片段

java 中equals和==的区别