随笔 - 40, 文章 - 0, 评论 - 20, 引用 - 0
数据加载中……

Java对象比较

 

Java中检查两个对象是否相等,这个看起来很简单的事情但是实际做起来不一定是一个简单的事情。我们可能首先想到的是==运算符号,但是这个运算符真的能比较两个对象么?我们先看下面一段代码:

   public static void main(String [] argv ){

        Integer    A = new Integer(47);

       Integer     B = new Integer(47);

      System.out.println( A == B ) ;

     System.out.println( A != B );

}

可能你觉得输出的结果是true false ,但是结果正好相反,是:false,true。不要觉得奇怪,因为==实际比较的是两个对象的句柄,而不是对象的内容,所以 A==B输出为false,    而A != B  输出为false.

可能以为equals方法能帮我们解决这个问题,那么来试一下,

class Value {
  int i;
}

public class EqualsMethod2 {
  public static void main(String[] args) {
    Value v1 = new Value();
    Value v2 = new Value();
    v1.i = v2.i = 100;
    System.out.println(v1.equals(v2));
  }
} ///:~
结果输出的并不是我们所希望的true,而是false,这是因为类默认的equal方法是直接比较句柄的,而不是我们所希望的比较内容,所以我们不得不发现我们要比较两个类的内容我们不得不在类中重写equal()方法来实现比较两个类的内容。

 

posted on 2005-06-08 21:26 月亮 阅读(445) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: