| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1474 人关注过本帖
标题:能不能利用这两个程序讲解一下==和equals的区别?
只看楼主 加入收藏
wxhwjsw
Rank: 1
等 级:新手上路
帖 子:274
专家分:0
注 册:2006-6-15
收藏
得分:0 
以下是引用NiceGirl在2006-8-14 0:02:10的发言:
==比较引用
Object中的equals比较的也是引用,在String和一些包装类中被重写,比较的是对象的实际内容

楼上的讲的不对的。。。。。楼上几位都没有注意看人家2楼发的帖子。。。这里我再发一下
也写个例子
Integer a1 = new Integer( 100 );
Integer a2 = new Integer( 100 );
System.out.println( a1.equlas(a2));


class Number {
int i;
}

class EqulasTest {
public static void main( String[] args ) {
Number n1 = new Number( );
Number n2 = new Number( );
n1.i = n2.i = 100;
System.out.println( n1.equlas(n2));
}
}
上一个是TRUE 后一个是FLASE

PS:上面的程序是我手打的  如不能运行 还请自己改下

[此贴子已经被作者于2006-8-18 21:06:25编辑过]


一个人的快乐,不是因为他拥有的多,而是因为他计较的少.
2006-08-18 21:05
chengsencs
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2006-7-24
收藏
得分:0 
我的意思是说能不能解释一下为什么第一个结果是true,第二个结果是false?
2007-02-15 15:11
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
很简单"=="的行为是确定的,就是比较两个引用是否指向同一个对象,是就TRUE,否则false;
而equals是一个方法,他的行为是可以通过在子类中覆写父类的equals方法而改变的;

换句话说,equals的行为是由你自己去定义的,你想让它怎么着都行;

比如Object的equals方法就是调用"==",所以对Object类,equals与"=="是一样的;对String,里面的equals方法已经覆写了,只有当两个String表示的字符串一样时才返回true;

11楼的结果同理,因为Number 没有覆写Object类的equals方法,所以Number 类的equals方法还是与Object类的方法有同样的行为...

[此贴子已经被作者于2007-2-15 19:17:35编辑过]


My BlogClick Me
2007-02-15 16:14
无理取闹
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:53
帖 子:4264
专家分:0
注 册:2006-7-26
收藏
得分:0 
楼上正解

win32汇编
病毒 加密
目前兴趣所在
2007-02-15 16:27
Java
Rank: 1
等 级:新手上路
帖 子:718
专家分:0
注 册:2007-1-29
收藏
得分:0 
以下是引用Eastsun在2007-2-15 16:14:33的发言:
很简单"=="的行为是确定的,就是比较两个引用是否指向同一个类,是就TRUE,否则false;
而equals是一个方法,他的行为是可以通过在子类中覆写父类的equals方法而改变的;

换句话说,equals的行为是由你自己去定义的,你想让它怎么着都行;

比如Object的equals方法就是调用"==",所以对Object类,equals与"=="是一样的;对String,里面的equals方法已经覆写了,只有当两个String表示的字符串一样时才返回true;

11楼的结果同理,因为Number 没有覆写Object类的equals方法,所以Number 类的equals方法还是与Object类的方法有同样的行为...

应该是在内存里面的同一个对象吧,不是类


Java,My Love!
2007-02-15 17:57
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
呵呵,楼上说的对.
我的表述有问题.

My BlogClick Me
2007-02-15 18:13
无理取闹
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:53
帖 子:4264
专家分:0
注 册:2006-7-26
收藏
得分:0 
楼上学java多久了
感觉挺厉害的

win32汇编
病毒 加密
目前兴趣所在
2007-02-15 18:30
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
那肯定是错觉:)
学JAVA倒有一段时间了,暑假的时候开始的吧,快一年了.
不过我不是搞计算机的,编程纯粹是爱好,平时用的少,又完全自学,所以学的也慢.

平时就喜欢在技术论坛灌灌水,回回贴,这样也算学以致用了^0^

My BlogClick Me
2007-02-15 19:16
无理取闹
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:53
帖 子:4264
专家分:0
注 册:2006-7-26
收藏
得分:0 

我也学了8 9个月了
进度挺快 就是基础不牢
所以现在下定决心 一定要把基础弄牢
又回来重新学


win32汇编
病毒 加密
目前兴趣所在
2007-02-15 19:47
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 

哦,ls是计算机系的么?


My BlogClick Me
2007-02-15 20:53
快速回复:能不能利用这两个程序讲解一下==和equals的区别?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036128 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved