| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 455 人关注过本帖
标题:字符串的比较
只看楼主 加入收藏
abc888
Rank: 1
等 级:新手上路
威 望:1
帖 子:90
专家分:0
注 册:2007-4-24
收藏
 问题点数:0 回复次数:6 
字符串的比较

String s1,s2;
s1="how are you";
s2="how are you";
String tom1=new String ("we are students");
String tom2=new String ("we are students");
请问大家:
s1==s2的值是false还是true?为什么?
tom1==tom2的值是false还是true?为什么?

搜索更多相关主题的帖子: 字符 
2007-04-29 23:47
tblovecj
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2006-9-20
收藏
得分:0 

如果我没记错的话:
s1==s2是返回true;
tom1==tom2是返回false;
因为s1,s2只是赋给了各个变量值,“==”就是比较值的大小,所以应该返回true;
因为tom1,tom2是你创建的两个不同名的对像,对像用"=="比较是去比较他们两个对像的引用地址,创建对像时是在堆内存里的,是存的它们在栈内存的地址,所以用“==”应该是返回的false,如果要使其返回true就要用"tom1.equals(tom2)",这样返回值应该是true;你可以试下,如果不对的话就是我说反了,呵。。。如果小弟有说错的地方请大家批评,我绝不是为了误导大家哟!大家一起加油,一起学习!


2007-04-30 01:01
qsrock
Rank: 1
等 级:新手上路
帖 子:255
专家分:0
注 册:2005-12-29
收藏
得分:0 

应该说s1,和s2都指向了"how are you";这个地址(对象)~

tom1==tom2是返回false;就是和楼上所说的差不多了!~

2007-04-30 12:29
abc888
Rank: 1
等 级:新手上路
威 望:1
帖 子:90
专家分:0
注 册:2007-4-24
收藏
得分:0 
答案就是:
s1==s2是返回true;
tom1==tom2是返回false;
谢谢!

编海无涯,回头死岸
2007-04-30 12:56
cctvdaoge
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-3-25
收藏
得分:0 
s1="how are you"
s2="how are you"
是隐式地创建了一个对象,赋值时候,s1和s2均指向同一个对象,所以==号比较是比较的对象内存地址,所以返回true。
tom1和tom2通过new后,指向两个不同的对象,只是其内容一样了而已,所以==号比较返回false。

天外浪人
2007-04-30 19:38
神vLinux飘飘x
Rank: 2
等 级:新手上路
威 望:3
帖 子:436
专家分:0
注 册:2007-1-4
收藏
得分:0 
"how are you"会保存在一个String常量池里面,而s1和s2会被系统自动分配指向这个常量,所以会返回true
2007-04-30 23:47
cca33
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-2-27
收藏
得分:0 
以下是引用qsrock在2007-4-30 12:29:12的发言:

应该说s1,和s2都指向了"how are you";这个地址(对象)~

tom1==tom2是返回false;就是和楼上所说的差不多了!~

说的对

2007-05-01 16:12
快速回复:字符串的比较
数据加载中...
 
   



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

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