==、!=和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  * */

 


 

 

上一篇:22_Android中的本地音乐播放器和网络音乐播放器的编写,本地视频播放器和网络视频播放器,照相机案例,偷拍案例实现


下一篇:红宝书新日本语能力考试N1~N5全套资料PDF分享