免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 13943 | 回复: 39

java的判断对象相等的两个问题 [复制链接]

论坛徽章:
0
发表于 2006-04-05 08:53 |显示全部楼层

String a="Hello World!";
String b="Hello World!";
a=b?  a和b是否相等 ? 为什么?

String a=new String("Hello World!";
String b="Hello World!";
a=b?  a和b是否相等 ? 为什么?

论坛徽章:
0
发表于 2006-04-05 09:46 |显示全部楼层
看你用哪个比较符

是用 == 还是用 equals()

equals 仅仅比较值是否相等。。

== 还比较是否指向同一个对象。

论坛徽章:
0
发表于 2006-04-05 09:50 |显示全部楼层
使用==进行判断

论坛徽章:
0
发表于 2006-04-05 09:59 |显示全部楼层
equals是object的方法,String类将其实现为字符串内容的对比,也就是两个串是否“内容一致”

==这个运算符则比较两个变量是否相等,而java中所有obj都是引用(姑且可以看成是指针),故而比较的是指针的值,换句话说就是看两个引用是否指向同一个内存地址

论坛徽章:
0
发表于 2006-04-05 11:58 |显示全部楼层
原帖由 kakasi 于 2006-4-5 09:59 发表
equals是object的方法,String类将其实现为字符串内容的对比,也就是两个串是否“内容一致”

==这个运算符则比较两个变量是否相等,而java中所有obj都是引用(姑且可以看成是指针),故而比较的是指针的值,换 ...



kakasi怎么把个JAVA学的那么深邃呀!教教我你是怎么学的?

论坛徽章:
0
发表于 2006-04-05 14:57 |显示全部楼层
楼上的 要是这个问题都不知道 还是算了吧 是本书都要说这个问题的

论坛徽章:
0
发表于 2006-04-05 15:09 |显示全部楼层
楼上的兄弟想多了,对于这个问题我当然知道,我赞赏kakasi不仅仅源于他对这个问题
圆满解答,而是因为看到他多次对一些问题所做的简练、精辟、深刻阐述,还有他的耐心,对于初学者来说,
这个很有用,CU是大家相互学习和讨论的地方,不是看戏或者说风凉话的地方!

论坛徽章:
0
发表于 2006-04-05 15:18 |显示全部楼层
结合四楼的看

如果是在程序开始的时候,

a==b是返回true的,以后的不保证

两种情况都是返回true

因为String是一个不可变的对象,而String的直接量赋值会自动寻找以前生成了的内容相同的实例赋给引用,若以前没有内容相同的实例存在,则创建新实例

也就是说LZ的两种情况,在String b="HelloWorld"时候,都会作b=a的操作
所以b==a的值都是true

但若程序在之前还有一些别的操作的话,尤其是第二种情况

例如 String c="HelloWorld!";
        String a=new String("HelloWorld");
        String b ="HelloWorld!";
这种情况a!=b了

[ 本帖最后由 艾斯尼勒 于 2006-4-5 15:20 编辑 ]

论坛徽章:
0
发表于 2006-04-05 15:26 |显示全部楼层
按照LZ的字面意思,我认为他说的两种情况下,a都不等于b,
因为在两种情况的本质都是一样的,a,b 分别是两个独立对象的引用,或者说
是两个独立对象在内存中的地址,既然是两个独立的地址,它们的值当然不一样!

论坛徽章:
0
发表于 2006-04-05 15:40 |显示全部楼层
原帖由 xxjoyjn 于 2006-4-5 15:26 发表
按照LZ的字面意思,我认为他说的两种情况下,a都不等于b,
因为在两种情况的本质都是一样的,a,b 分别是两个独立对象的引用,或者说
是两个独立对象在内存中的地址,既然是两个独立的地址,它们的值当然不一样!



情看搂上我的解释,都应该是返回true的,您可以写个程序实验一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP