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提供的重写。

 

猜你喜欢

转载自www.cnblogs.com/Coder1999/p/10849594.html