java 中equals()与==的区别

     这是我从我看的"Thinging in java"中总结出来的,代码基本上都是这本书里的.
我们首先看一段java代码:
     public class Test1{
       Integer n1=new Integer(47);
       Integer n2=new Integer(47);
       public static void main(String [] arg){
        System.out.println(n1==n2);
        System.out.println(n1!=n2);
      }
}
//结果:false
//     true
  原因分析:==和!=比较的是对象的引用,两个对象虽然是内容是相同的但是对象的引用不同所以就有了上面的结果.那么如果想比较两个对象的内容是否相同,又该如何操作?可以使用对所有对象都适用的方法equals()方法.因为equals()方法是所有对象的父类Object 类定义的方法.请看下面代码:
    public  class  Test2{
    Integer n1=new Integer(47);
    Integer n2=new Integer(47);
    public static void main(String [] arg){
    System.out.println(n1.equals(n2));
   }
}
//结果:true
也许这没有我们想的那么简单.请看下面的代码:
class Value{
int i;
}
public class Test3 {
public static void  main(String [] arg){
Value v1=new Value();
Value v2=new Value();
v1.i=100;
v2.i=100;
System.println(v1.equals(v2));
  }
}
//结果:false.
   也许我们会为此感到奇怪.这是因为equals()在Object类中默认是比较引用的.如果不在子类中覆盖父类中定义的equals()方法比较的并不是类的内容.请看下面我覆盖equals()方法后的代码:
class Value{
  int i;
  public Value(int i){
  this.i=i;
 }
 public boolean equals(Value v)
 {
  return this.i==v.i;
 }
}
public class Test{
   public static void main(String[] arg)
  {
     Value v1=new Value(100);
     Value v2=new Value(100);
    System.out.println(v1.equals(v2));
   }
}
//结果:true
//这就和我们所想的一致了.
 
 
 
 
 
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值