当前位置: 代码迷 >> Java相关 >> 字符串的比较
  详细解决方案

字符串的比较

热度:260   发布时间:2007-04-29 23:47:08.0
字符串的比较

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?为什么?

搜索更多相关的解决方案: 字符  

----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------

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

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


----------------解决方案--------------------------------------------------------
答案就是:
s1==s2是返回true;
tom1==tom2是返回false;
谢谢!

----------------解决方案--------------------------------------------------------
s1="how are you"
s2="how are you"
是隐式地创建了一个对象,赋值时候,s1和s2均指向同一个对象,所以==号比较是比较的对象内存地址,所以返回true。
tom1和tom2通过new后,指向两个不同的对象,只是其内容一样了而已,所以==号比较返回false。
----------------解决方案--------------------------------------------------------
"how are you"会保存在一个String常量池里面,而s1和s2会被系统自动分配指向这个常量,所以会返回true

----------------解决方案--------------------------------------------------------
以下是引用qsrock在2007-4-30 12:29:12的发言:

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

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

说的对


----------------解决方案--------------------------------------------------------
  相关解决方案