《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 *///:~

 

 

                                                                        

转载于:https://www.cnblogs.com/DamonGeng/p/10480599.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值