Topic: 请大家帮我讲讲(==、equals)区别!!!

  Print this page

1.请大家帮我讲讲(==、equals)区别!!! Copy to clipboard
Posted by: 1332185
Posted on: 2006-06-04 11:01

Integer i=new Integer(42);
Long l=new Long(42);
Double d=new Double(42.0);

a:(i==l)
b:(i==d)
c:(d==l)
d:(i.equals(d))
e:(d.equals(i))
f:(i.equals(42))
麻烦帮我讲讲,把a、b、c、d、e、f几个选项都讲讲!!
谢谢了!!!!!


d选项为:i与d比较
e选项为:d与i比较

2.Re:请大家帮我讲讲(==、equals)区别!!! [Re: 1332185] Copy to clipboard
Posted by: stormc
Posted on: 2006-06-04 12:01

表情符号都出来了啊..

3.Re:请大家帮我讲讲(==、equals)区别!!! [Re: 1332185] Copy to clipboard
Posted by: jameszhang
Posted on: 2006-06-04 14:18

1332185 wrote:
Integer i=new Integer(42);
Long l=new Long(42);
Double d=new Double(42.0);

a:(i==l)
b:(i==d)
c:(d==l)
d:(i.equals(d))
e:(d.equals(i))
f:(i.equals(42))
麻烦帮我讲讲,把a、b、c、d、e、f几个选项都讲讲!!
谢谢了!!!!!


两个对象用 == 比较,比较的是对象引用 限于相同类型对象,
equals 则比较 值的 大小

a b c 类型都不同,不能比较,d e 的值 不相同 因为精度不同, f
根据 规范 42 是个整型 所以 应该是 f

4.Re:请大家帮我讲讲(==、equals)区别!!! [Re: 1332185] Copy to clipboard
Posted by: 1332185
Posted on: 2006-06-04 14:55

麻烦论坛其他朋友在帮我讲讲!!
谢谢了!!

5.Re:请大家帮我讲讲(==、equals)区别!!! [Re: 1332185] Copy to clipboard
Posted by: why
Posted on: 2006-06-04 20:34

1332185 wrote:
麻烦论坛其他朋友在帮我讲讲!!

請問閣下想其他朋友再(不是在)讲讲甚麼呢?

6.Re:请大家帮我讲讲(==、equals)区别!!! [Re: 1332185] Copy to clipboard
Posted by: 1332185
Posted on: 2006-06-04 21:30

why大哥!
你误会了,因为以前我什么编程语言都没学过,就直接来学习java,没编程基础,对java理解能力比较低,所以想听听不同的讲解...................

7.Re:请大家帮我讲讲(==、equals)区别!!! [Re: 1332185] Copy to clipboard
Posted by: why
Posted on: 2006-06-04 23:56

1332185 wrote:
why大哥!
你误会了,因为以前我什么编程语言都没学过,就直接来学习java,没编程基础,对java理解能力比较低,所以想听听不同的讲解...................

建議找一兩本書(或視頻)好好讀讀,遇到具體問題再提出,這樣才較有效率

8.Re:请大家帮我讲讲(==、equals)区别!!! [Re: why] Copy to clipboard
Posted by: gleamyshadow
Posted on: 2006-06-05 22:52

why wrote:
建議找一兩本書(或視頻)好好讀讀,遇到具體問題再提出,這樣才較有效率

==和equals的区别我也不太清楚,但是我看Objece.java中是如下这样定义equals方法的:

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

通过上面这个代码,也就是说,当我们用equals比较对象A和B的时候,也就是A.equals( B );的时候,java谁将A==B的直返回给该方法,既然如此,那为什么不直接用A==B来比较

9.Re:请大家帮我讲讲(==、equals)区别!!! [Re: 1332185] Copy to clipboard
Posted by: jameszhang
Posted on: 2006-06-06 18:22

  public boolean equals(Object anObject) {
  if (this == anObject) {
   return true;
  }
  if (anObject instanceof String) {
   String anotherString = (String)anObject;
   int n = count;
   if (n == anotherString.count) {
    char v1[] = value;
    char v2[] = anotherString.value;
    int i = offset;
    int j = anotherString.offset;
    while (n-- != 0) {
     if (v1[i++] != v2[j++])
      return false;
    }
    return true;
   }
  }
  return false;
}


哈哈 断章取义

10.Re:请大家帮我讲讲(==、equals)区别!!! [Re: gleamyshadow] Copy to clipboard
Posted by: zcjl
Posted on: 2006-06-06 19:29

gleamyshadow wrote:
==和equals的区别我也不太清楚,但是我看Objece.java中是如下这样定义equals方法的:

通过上面这个代码,也就是说,当我们用equals比较对象A和B的时候,也就是A.equals( B );的时候,java谁将A==B的直返回给该方法,既然如此,那为什么不直接用A==B来比较

==是一个运算符,equals()是一个方法
对于==这个运算符,对所有的Class都是比较是否同一个对象
而equals()方法则不尽然,我们可以使用Object这个Class的默认实现(直接调使用==运算符进行比较),也可以自己override,实现完全与对象比较不相干的逻辑
大多数情况下,我看到的“==与equals的区别”这个问题时,都是特指String这个Class的,而String的euqals方法实现,jameszhang在前面已经帖出来了
如果不指明是那个具体Class的equals方法,你就可以大胆说,==与equals没有任何联系

11.Re:请大家帮我讲讲(==、equals)区别!!! [Re: 1332185] Copy to clipboard
Posted by: guaqingqing1314
Posted on: 2006-06-06 21:29

==,是比较两个对象是否为同一个对象,即是否指向同一内容
equals,是比较两个对象中的内容是否相同!

12.Re:请大家帮我讲讲(==、equals)区别!!! [Re: guaqingqing1314] Copy to clipboard
Posted by: foster_shao
Posted on: 2006-06-06 23:03

好像不是这样吧,比如
int a=1;
int b=1;
if(a==b)
.............................
a,b 是同一对象???

13.Re:请大家帮我讲讲(==、equals)区别!!! [Re: foster_shao] Copy to clipboard
Posted by: why
Posted on: 2006-06-07 01:06

foster_shao wrote:
好像不是这样吧,比如
int a=1;
int b=1;
if(a==b)
.............................
a,b 是同一对象???

int, and other primitives, are not objects.

14.Re:请大家帮我讲讲(==、equals)区别!!! [Re: why] Copy to clipboard
Posted by: zcjl
Posted on: 2006-06-07 09:07

foster_shao wrote:
好像不是这样吧,比如
int a=1;
int b=1;
if(a==b)
.............................
a,b 是同一对象???


zcjl wrote:
对于==这个运算符,对所有的Class都是比较是否同一个对象


==运算符,对于primitives是直接比较他们的值,但对于objects,则是比较他们是否同一对象

而对于equals()方法,虽然从字面上理解,是用以比较两个对象是否相等,但其具体功能则看你如何实现它
你可以像Object类那样直接调用==运算符来比较,也可以像String、Integer等类那样比较对象的值
同时,也可以只比较Class内部的一个关键Field,比如使用Hibernate的自定义POJO有时候就只需要比较Identity这个Field是否相等
甚至,就像我前面说的,你可以在equals方法内部不做任何比较操作(不建议如此做,只是举一个极端的例子),而赋予它其他的功能

15.Re:请大家帮我讲讲(==、equals)区别!!! [Re: zcjl] Copy to clipboard
Posted by: Skybus
Posted on: 2006-06-07 10:57

zcjl wrote:
==运算符,对于primitives是直接比较他们的值,但对于objects,则是比较他们是否同一对象

Object类中的equals方法用于测试某个对象是否同另一个对象相等.它在Object类中的实现是判断两个对象是否指向同一块内存区域.这种测试并没有太大用处.
http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index.html?overview-summary.html
如果要想测试两个对象相等,就要覆盖equals方法.

16.Re:请大家帮我讲讲(==、equals)区别!!! [Re: 1332185] Copy to clipboard
Posted by: hahaxiao51
Posted on: 2006-06-08 21:27

据我理解==就是比较对象的引用是否相同,只有当两个引用同时指向一个对象时才相等。
equals是比较内容是否相同。
例如:
Inteter a=new Integer(4)
Integer b=new Integer(4)
a==b不成立
a.equalsBeer则成立

17.Re:请大家帮我讲讲(==、equals)区别!!! [Re: 1332185] Copy to clipboard
Posted by: atlantis
Posted on: 2006-06-08 23:01

每个java初学者都应该搞懂的问题
http://www.jesoft.cn/posts/list/95.page
里面就完整介绍了== ,equals的用法。。。。

18.Re:请大家帮我讲讲(==、equals)区别!!! [Re: atlantis] Copy to clipboard
Posted by: zcjl
Posted on: 2006-06-09 00:32

hahaxiao51 wrote:
据我理解==就是比较对象的引用是否相同,只有当两个引用同时指向一个对象时才相等。


这个解释应该是比较准确的,我忽略了引用这个概念,因此不应该是“两个Class是否同一对象”,而是“两个引用是否指向同一对象”
谢谢hahaxiao51


   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