黑马程序员技术交流社区

标题: 这道题还比较不错,有时间的同学可以看看 [打印本页]

作者: wwwjaycn0717    时间: 2016-7-29 01:41
标题: 这道题还比较不错,有时间的同学可以看看
下面程序的运行结果是(     )
   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

作者: lbx95272006    时间: 2016-7-29 17:40
还可以

作者: lbx95272006    时间: 2016-7-29 17:43
答案应该是 D
作者: leomywork    时间: 2016-7-29 18:48
为什么是D?
作者: WatingU    时间: 2016-7-29 18:49
太绕了 懒得看 不过很赞
作者: 18072727834    时间: 2016-8-4 22:11
选D 这道题理解了还是挺重要的  加深:栈、堆、常量池 的理解

作者: itcoder    时间: 2016-8-4 22:17
嗯嗯,不错不错!
作者: jiajun    时间: 2016-8-5 09:12
leomywork 发表于 2016-7-29 18:48
为什么是D?

new String会在堆内存新建一个对象,所以两个指向地制值不同,第一个是false
第二个一个指向“你好吗”的地址,“你”+“号码”也会new 一个对象出来,所以两个地制值不同,也是false
作者: cat73    时间: 2016-8-5 10:43
由于我对字符串去重特性的理解错误,我以前一直以为,这个题答案不确定,但实际上,这个题的答案应该是 D。

作者: kang414675024    时间: 2016-8-5 11:32
求教:
/*   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));
注释部分和下面的部分有什么区别,运行结果不一样的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2