黑马程序员技术交流社区
标题:
求助一个小问题,关于String的,挺诡异的!
[打印本页]
作者:
せR3n、何必装纯
时间:
2011-11-14 22:36
标题:
求助一个小问题,关于String的,挺诡异的!
在做一个东西,遇到了一个挺诡异的问题的,
如果字符串用单个字符累加起来,
结果会与字符串不相等。
我简化了下,也就是下面的代码:
Java code
String str1=""; str1+='a'; str1+='b'; str1+='c'; String str2="abc"; System.out.println(str1==str2);
结果是false
谁能帮我解释下吗?
最好能帮我给出解决方法,使得str1== str2能成立,
比如str1要怎么转换?
作者:
胡文杰
时间:
2011-11-14 23:27
str1和str2在这里分别是两个对象 “==”这里判断的是两个对象是否相等,指向的是哈希码,也就是内存地址!两个对象,内存地址可定是不相等的!所以就是false了!你可以这样写str1.equals(str2)这样就是判断两个对象中变量值是否相等,结果为true!
作者:
常文艺
时间:
2011-11-15 00:03
楼上的解释是错的 我把你代码改了一下 你比的直接是字符"str1"=="str2"。而不是所代表的值 这样写结果为 true. class W
{
String str1 = "abc";
String inn(String str1)
{
return str1;
}
}
class Test
{
public static void main(String[] args)
{
W nu = new W();
C ni = new C();
System.out.println(nu.inn(nu.str1)==ni.inn1(ni.str2));
}
}
class C
{
String str2="abc";
String inn1(String str2)
{
return str2;
}
}
作者:
常文艺
时间:
2011-11-15 00:18
呵呵 还是2楼的对 我可能说错了
作者:
胡文杰
时间:
2011-11-15 00:29
你这样写真不如直接写“abc”==“abc”
作者:
常文艺
时间:
2011-11-15 00:40
如果 String str2="abc" ,String str1="abc" ;System.out.println(str1==str2); 也是2个对象比 结果为真 所以你说的也有问题啊
作者:
骚灵小情歌
时间:
2011-11-15 00:58
String srt1 = "";
str1+='a';
str1+='b';
你觉得这样写对吗?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2