论坛首页 入门技术论坛

java中==与equals

浏览 1416 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-09-23  

在一些公司面试的时候,经常会出现==与equals的用法:

对于==,一般不仅比较对象的值还比较对象的reference;

对于equals一般给人的印象是比较对象的值:

 Integer ii=new Integer(10);
  Integer iu=new Integer(10);
  
  System.out.println("比较的结果="+ii.equals(iu));

 结果是:true;

 

但对于:

 class Number{
     int i;}

 

Number b=new Number();
  b.i=2;
  Number c=new Number();
  c.i=2;
  System.out.println("oooooooooooo"+c.equals(b));

结果确实:flase;

 

原因是在缺省情况下 equals是比较reference 代码如下:

    public boolean equals(Object obj) {
 return (this == obj);
    }

 

只是在JAVA 大多数类中都覆写了这个方法;

将Number类修改下 就可以返回true的结果了

  class Number{
     int i;
     boolean value;
        public boolean equals(Object obj) {
         if (obj instanceof Number) {
             return value == ((Number)obj).value;
         }
         return false;
            }

    }

 

 

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics