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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  • public class StringTest
  • {
  •         public static void main(String[] args) {
  •                 String s1 = "a";
  •                 String s2 = s1 + "b";
  •                 String s3 = "a" + "b";
  •                 System.out.println(s2 == "ab");
  •                 System.out.println(s3 == "ab");
  •                 System.out.println(s2.equals(s3));
  •                 System.out.println(s2 == s3);

  •         }
  • }

结果
false
true
true
false

分析为什么呀?

评分

参与人数 1黑马币 +1 收起 理由
Just_Only + 1 鼓励一下。。。

查看全部评分

4 个回复

倒序浏览
本帖最后由 肥猫 于 2013-7-2 23:11 编辑

第一个输出比的是地址,S2和S1+B的地址能一样么?数值是一样没错;
至于第二个不用分析都懂了吧;
第三个比较的是值肯定是返回真;
第四个,S2和S3终究是变量而已并非字符串本身,从栈区指向字符串本身,肯定返回的是FALSE.

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 很给力!

查看全部评分

回复 使用道具 举报
这个问题提的真挺好,明天让老师画个内存图,好好讲一下
回复 使用道具 举报
这个你们老师上课没提过么?很重要的东西.~~
回复 使用道具 举报
龚首道 来自手机 中级黑马 2013-7-3 14:57:39
报纸
不错,理解了。。。是不是就是==比地址,equals比内容?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马