码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-12-14 13:43:37      阅读:4      评论:0      收藏:0      [点我收藏+]

标签:roman   字符串   优化   变量   应该   abc   java   表达式   str   

对于如下代码:

String s1 = "a";

String s2 = s1 + "b";

String s3 = "a" + "b";

System.out.println(s2 == "ab");

System.out.println(s3 == "ab");

第一条语句打印的结果为false,第二条语句打印的结果为true

Java会在编译时对字符串相加进行优化处理,如果整个表达式中所有参与运算的都是字符串直接量,Java会在编译时就把这个表达式的值计算出来,然后直接将结果赋值给字符串引用变量。因此上面题目中定义的String s = "a" + "b" + "c" + "d";实际上相当于直接定义了"abcd"的字符串直接量,所以,上面的代码应该只创建了一个String对象。

而且这个字符串直接量会被放入字符串缓存池中。如下两行代码,

String s = "a" + "b" + "c" + "d";

System.out.println(s == "abcd");

由于s引用了字符串缓存池中的"abcd"字符串,因此上面输出结果应该为true

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

标签:roman   字符串   优化   变量   应该   abc   java   表达式   str   

原文地址:https://www.cnblogs.com/programb/p/14068493.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!