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