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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

王颖

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 王颖 初级黑马   /  2012-9-22 01:45  /  1295 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";

3 个回复

倒序浏览

楼主可以看一下如下代码:
String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";
System.out.println(s2 == "ab");
System.out.println(s3 == "ab");
第一条语句打印的结果为false,第二条语句打印的结果为true,这说明javac编译可以对字符串常量直接相加的表达式进行优化,不必要等到运行期去进行加法运算处理,而是在编译时去掉其中的加号,直接将其编译成一个这些常量相连的结果。
题目中的第一行代码被编译器在编译时优化后,相当于直接定义了一个”abcd”的字符串,所以,上面的代码应该只创建了一个String对象。写如下两行代码,
                String s = "a" + "b" + "c" + "d";
                System.out.println(s == "abcd");
最终打印的结果应该为true。

点评

嗯,第一次发帖,那么快就有回复了,很给力啊  发表于 2012-9-22 01:49

评分

参与人数 1黑马币 +2 收起 理由
王颖 + 2

查看全部评分

回复 使用道具 举报
张忠豹 发表于 2012-9-22 01:46
楼主可以看一下如下代码:
String s1 = "a";
String s2 = s1 + "b";

还是黑马给力啊,要好好学习啊
回复 使用道具 举报
2楼兄弟给出回复了,就不献丑了。
大家一起加油啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马