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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 刘悦 于 2012-8-9 09:04 编辑
  1. String s1="abc";
  2. final String s2=getS2();
  3. System.out.println(s1==s2);
  4. private static String getS2(){
  5.          return "b";
  6. }
复制代码
以上结果运行为:
false
小弟很纠结的是,为什么final String s2="abc";的时候会成功返回true,但是这里会返回false,难道是因为调用了方法的原因?
希望能得到各位大哥大姐的详细分析,小弟不胜感激~~~
在线求解~~~~~


犯二了,return "b"应该是return "abc",结果是true,与本人思路正确,感谢1楼的同学,让小弟回看代码发现了这个低级失误……

此问题解决

5 个回复

正序浏览
王少岩 发表于 2012-8-9 09:09
你的getS2()返回值写错了吧,retrun "abc";结果就是true了。。。你写的情况是s1指向"abc"的地址,而s2指向 ...

写错了,不好意思,问题已经修改过了,问题已经解决
回复 使用道具 举报
你的getS2()返回值写错了吧,retrun "abc";结果就是true了。。。你写的情况是s1指向"abc"的地址,而s2指向"b"的地址,对于"abc"和"b",他们的地址和内容都不相同,所以无论s1==s2还是s1.equals(s2)返回的结果都是false。
回复 使用道具 举报
犯二了犯二了,方法里面值写错了,出了乱子,此问题收起解决。
回复 使用道具 举报
时艳军 发表于 2012-8-9 08:47
这里你调用了方法之后,就想当时String s2=“b”.而String s1=“abc”。这两个肯定是创建在栈内存中 ...

那么,小弟再在代码上加上s1.equals(s2);的代码后,他的值仍然是false,这又如何解释呢?求解~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马