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

© NeXtyin 中级黑马   /  2016-5-7 23:48  /  382 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s = "123" + "456"内存中产生几个字符串对象?
这是个比较有争议的问题,面试的时候,老师还挺喜欢问,论坛上大家说几个的也有,我给大家分析一下,因为我们前面有提到Java字符串的缓存机制,编译器在编译的时候会进行优化,所以在编译的过程中123和456被合成了一个字符串"123456",因此,如果缓存池中目前没有123456这个对象,那么会产生一个,即""123456",且栈中产生一个引用s指向它,如果缓存池中已经存在"123456",那么将产生0个对象,直接用s指向它。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马