黑马程序员技术交流社区

标题: 求助一个小问题,关于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