您当前的位置:首页 > 计算机 > 编程开发 > Java

1.17. s=a+b+c+d 一共创建了多少个对象?

时间:12-14来源:作者:点击数:

答:对于如下代码:

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。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐