日期:2014-05-20  浏览次数:20597 次

字符串常量池
请问,String s3 = "sss" + "111";执行这一句之后,字符串常量池中有几个字符串?

------解决方案--------------------
String String s3 = "sss" + "111"; 1个。
由于常量的值在编译的时候就被确定了。在这里,"sss"和"111"都是常量,因此变量s3 的值在
编译时就可以确定。这行代码编译后的效果等同于:
String s3 ="sss111";
因此这里只创建了一个对象"sss111",并且它被保存在字符串池里了。

------解决方案--------------------
http://topic.csdn.net/u/20090519/18/7b8cf7ef-bc06-4d26-8a2c-692eb0562231.html
------解决方案--------------------
感觉是1个。
String str1 = "sss";
String str2 = "111";
String str3 = str1 + str2;
这样是3个。
支持下二楼的。
------解决方案--------------------
请问,String s3 = "sss" + "111";执行这一句之后,字符串常量池中有几个字符串?
应该是一个
通过连接操作得到的String(非常量表达式),连接操作是运行时进行的,会新创建对象,所以它们是不同的。
楼主的例题是常量表达式 所以只有一个
如果是 String s2="ss";
String s3 = s2 + "111";
则会产生两个 

可以看下zangxt 的总结
http://topic.csdn.net/u/20090519/18/7b8cf7ef-bc06-4d26-8a2c-692eb0562231.html
------解决方案--------------------
探讨
String String s3 = "sss" + "111"; 1个。
由于常量的值在编译的时候就被确定了。在这里,"sss"和"111"都是常量,因此变量s3 的值在
编译时就可以确定。这行代码编译后的效果等同于:
String s3 ="sss111";
因此这里只创建了一个对象"sss111",并且它被保存在字符串池里了。