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的区别的主要内容,如果未能解决你的问题,请参考以下文章