《Java编程思想》阅读笔记 —— == 与 != 操作符

 对于对象,== 与 !=  比较的是引用;对于基本类型,比较的是内容。

public class Equivalence(){
    public static void main(String[] args){
        Integer n1 = new Integer(47);  
        Integer n2 = new Integer(47);   
        System.out.println(n1 == n2);  
        System.out.println(n1 != n2);
    }           
}/* Output:
false
true
*///:~

包装类都是引用数据类型。

非基本数据类型的对象,比较内容时,可以使用对应的equals()。如果在该类中,没有重写Object的equals方法,那么会默认比较引用,就不可能出现我们希望的

行为。

如下边代码:

 1 class Value(){
 2   int i;  
 3 }
 4 
 5 
 6 public class EqualsMethod2(){
 7     Value v1 = new Value();
 8     Value v2 = new Value();
 9     v1.i = v2.i = 100;
10     System.out.println(v1.equals(v2));
11 }/* Output
12 false
13 *///:~

如果在Value类中重写equals(),比较内容的话,结果会改变。 

 1 public class Test {
 2     public static void main(String[] args) {
 3         Value v1 = new Value();
 4         Value v2 = new Value();
 5         v1.i = v2.i = 100;
 6         System.out.println(v1 == v2);
 7         System.out.println(v1.equals(v2));
 8     }
 9 }
10 
11 class Value{
12     int i;
13     public boolean equals(Object obj) {
14         if(this == obj)
15             return true;
16         if(obj instanceof Value) {
17             Value anValue = (Value)obj;
18             if(i == anValue.i)
19                 return true;
20         }
21         return false;
22     }
23 }
24 
25 /* Output 
26 false
27 true
28 *///:~

                                                                        

猜你喜欢

转载自www.cnblogs.com/DamonGeng/p/10480599.html