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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

下面程序的运行结果是(     )
   String s1 = “abc”;
   String s2 = new String(“abc”);
   System.out.println(s1==s2);
   String s3 = “你好吗”;
   String s4 =”你”;
   String s5 =”好吗”;
   System.out.println(s3==(s4+s5))  
a)        true true
b)        false true
c)        true flase
d)        false false

9 个回复

倒序浏览
还可以
回复 使用道具 举报
答案应该是 D
回复 使用道具 举报
leomywork 来自手机 中级黑马 2016-7-29 18:48:50
板凳
为什么是D?
回复 使用道具 举报
太绕了 懒得看 不过很赞
回复 使用道具 举报
选D 这道题理解了还是挺重要的  加深:栈、堆、常量池 的理解
回复 使用道具 举报
嗯嗯,不错不错!
回复 使用道具 举报

new String会在堆内存新建一个对象,所以两个指向地制值不同,第一个是false
第二个一个指向“你好吗”的地址,“你”+“号码”也会new 一个对象出来,所以两个地制值不同,也是false
回复 使用道具 举报
cat73 黑马帝 2016-8-5 10:43:21
9#
由于我对字符串去重特性的理解错误,我以前一直以为,这个题答案不确定,但实际上,这个题的答案应该是 D。
回复 使用道具 举报
求教:
/*   String s1 = "a";
                    String s2 = "b";
                    String s3 = "c";
                        String s4 = "abc";
                        String s5 = s1+s2+s3;
                        System.out.println(s4 == s5);
                        System.out.println(s4.equals(s5));
  */
                String s1 = "a" + "b" + "c";
                String s2 = "abc";
                System.out.println(s1 == s2);
                System.out.println(s1.equals(s2));
注释部分和下面的部分有什么区别,运行结果不一样的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马