A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

str1和str2在这里分别是两个对象    “==”这里判断的是两个对象是否相等,指向的是哈希码,也就是内存地址!两个对象,内存地址可定是不相等的!所以就是false了!你可以这样写str1.equals(str2)这样就是判断两个对象中变量值是否相等,结果为true!

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
在做一个东西,遇到了一个挺诡异的问题的,
如果字符串用单个字符累加起来,
结果会与字符串不相等。
我简化了下,也就是下面的代码:

Java code

    String str1=""; str1+='a'; str1+='b'; str1+='c'; String str2="abc"; System.out.println(str1==str2);



结果是false
谁能帮我解释下吗?
最好能帮我给出解决方法,使得str1== str2能成立,
比如str1要怎么转换?

6 个回复

倒序浏览
楼上的解释是错的 我把你代码改了一下  你比的直接是字符"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;
  }
   
   }
回复 使用道具 举报
呵呵  还是2楼的对  我可能说错了  
回复 使用道具 举报
你这样写真不如直接写“abc”==“abc”
回复 使用道具 举报
如果 String str2="abc" ,String str1="abc" ;System.out.println(str1==str2);  也是2个对象比  结果为真  所以你说的也有问题啊
回复 使用道具 举报
String srt1 = "";
str1+='a';
str1+='b';

你觉得这样写对吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马