黑马程序员技术交流社区

标题: 一个String的问题,求解答~ [打印本页]

作者: 726477179    时间: 2016-8-13 22:19
标题: 一个String的问题,求解答~
程序的运行结果是(     )
   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

我选的是B,但是百度出来的答案是D,不是常量优化机制吗?求解答!
作者: life写实    时间: 2016-8-13 22:24
s4+s5是变量相加。无法在编译期确定的
作者: 敲敲乐z    时间: 2016-8-14 11:20
s4+s5是变量,虽然被赋值,但依然是变量相加!
作者: 726477179    时间: 2016-8-14 13:55
life写实 发表于 2016-8-13 22:24
s4+s5是变量相加。无法在编译期确定的

原来这样的~
作者: warsong    时间: 2016-8-14 21:17
方法区中常量池两个地址:一个是"你",一个是"好吗"。通过StringBuffer类append方法和toString方法把两个字符串连接在一起,在堆内存新创建一个内存空间,和常量池中另外一个地址:"你好吗"不同,酱紫。
作者: Hacker_    时间: 2016-8-14 21:44
这个很简单   选择d   因为本身地址就不同   比较当然是d
作者: 欧文略    时间: 2016-8-14 22:03
==号判断的是地址值,s4+s5是两个变量在相加,常量优化机制.前提是常量
作者: 冬冬宋    时间: 2016-8-14 23:57
66666666666666666
作者: chensc    时间: 2016-8-15 20:11
学习学习!
作者: double_x    时间: 2016-8-15 21:35
变量  你自己再看一下
作者: heimaljx    时间: 2016-8-16 00:21
那些都是变量,基础视频有讲过这个




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