==!=和equals区别

Posted sumAll

tags:

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

Java— ==、!=和equals区别

1、==和!=

==和!=适用于所有对象,==表示是否相等,!=表示是否不相等,结果都为布尔值,true或false。

 

 1 public class test {
 2     public static void main(String[] args) {
 3         Integer n1 = new Integer(47);
 4         Integer n2 = new Integer(47);
 5         System.out.println(n1==n2);
 6         System.out.println(n1!=n2);
 7     }
 8 }
 9 10 /**
11  *Output:
12  * false
13  * true
14  * */

 

n1和n2的内容都是47,但n1和n2是两个对象的引用。由于==和!=比较的是对象的引用,因而出现以上的结果。

基本类型可以通过==和!=进行比较,如下代码所示。

 

 1 public class test1 {
 2     public static void main(String[] args) {
 3         int n1 = 6;
 4         int n2 = 6;
 5         System.out.println(n1==n2);
 6         System.out.println(n1!=n2);
 7     }
 8 }
 9 10 /**
11  *Output:
12  * true
13  * false
14  * */

 

2、equals

比较两个对象的实际内容是否相同通过equals实现,但这个方法不适用于基本类型。

 

 1 public class test {
 2     public static void main(String[] args) {
 3         Integer n1 = new Integer(47);
 4         Integer n2 = new Integer(47);
 5         System.out.println(n1.equals(n2));
 6     }
 7 }
 8  9 /**
10  *Output:
11  * true
12  * */

 

3、自定义类使用equals

在自定义类中,equals()的默认行为是比较引用,所以如果需要比较对象的实际内容,在自定义类中需要覆盖equals方法。

 

 1 public class test {
 2     public static void main(String[] args) {
 3         Value1 v1=new Value1();
 4         v1.i=6;
 5         Value1 v2=new Value1();
 6         v2.i=6;
 7         System.out.println(v1.equals(v2));
 8  9         Value2 v3=new Value2();
10         v3.j=3;
11         Value2 v4=new Value2();
12         v4.j=3;
13         System.out.println(v3.equals(v4));
14     }
15 }
16 17 class Value1{
18     int i;
19 }
20 21 class Value2{
22     int j;
23 24     public boolean equals(Value2 v) {
25         return j==v.j;
26     }
27 }
28 29 /**
30  *Output:
31  * false
32  * true
33  * */

 


 

 

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

C# 中 ==和equals的区别

java equals 和 == 区别

== 和 equal 区别

C# 中基元的 == 和 Equals() 有啥区别?

== 和 Equals() 之间的 C# 区别

equals和==的区别