Topic: 请教关于equals()的问题 _一个小程序[app]

  Print this page

1.请教关于equals()的问题 _一个小程序[app] Copy to clipboard
Posted by: xiaotuo
Posted on: 2004-08-13 17:05

c01:
public class Equi{
public static void main(String[] args){
Integer n1=new Integer(1);
Integer n2=new Integer(1);
System.out.println(n1.equals(n2));
}
}

c02:
class Value{
int i;
}

public class Equi{
public static void main(String[] args){
Value n1=new Value();
Value n2=new Value();
n1.i=n2.i=1;
System.out.println(n1.equals(n2));
}
}

为什么c01输出的结果为true,而c02输出的结果为false.

2.Re:请教关于equals()的问题 _一个小程序[app] [Re: xiaotuo] Copy to clipboard
Posted by: href
Posted on: 2004-08-16 11:24

c02中你没有实现equals方法
所以你调用的n1.equals(n2)的equals方法是继承自java.lang.Object的euqals方法,这个默认的方法只比较两个Object是不是同一个,而不是比较里面的成员变量是不是一样。

就像你拿两个同牌子同型号的键盘来,看起来是一抹一样,但本质上不属于同一个东西,所以不equale

3.Re:请教关于equals()的问题 _一个小程序[app] [Re: xiaotuo] Copy to clipboard
Posted by: xiaotuo
Posted on: 2004-08-18 16:50

也就是说,在c01中,equals方法比较的是成员变量值,而在c02中比较的是object reference.但是,我们又该怎么区别当equals方法在使用时,它究竟是比较成员变量值还是object?其究竟有没有实现equals方法呢?? Smile
谢谢!!! Smile

4.Re:请教关于equals()的问题 _一个小程序[app] [Re: xiaotuo] Copy to clipboard
Posted by: href
Posted on: 2004-08-23 15:23

啊,那得去看你所要比较的两个object的class源代码了
看里面的equals方法是怎么实现的。
因为即使实现了equals方法也不能肯定的说是比较成员变量啊。
要看具体代码的实现。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923