字符串的创建辨析
String s=”1″
*使用引号创建字符串会在常量池中寻找 有则直接返回 没有则创建
String s=new String(“1”);
*使用new创建 如果常量池没有”1″ 则在常量池中创建”1″ 再在堆中创建String并返回地址给引用
*使用s.intern()如果常量池中没有与字符串相同的字符串(判断逻辑 调用equals)则加入对象的引用(1.7及之后 常量池移入堆)
注:上述代码 调用s.inertn()之前 常量池中已存在”1″的对象 故相当于没有调用
String s=new String(“1”)+new String(“1”)
s.intern()
注:该例子中 使用StringBuilder创建字符串 常量池中不存在”11″的对象 故将s.引用加入常量池
参考博客链接 深入解析String#intern
© 版权声明
本站所有资源来自于网络,仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您(转载者)自己承担!
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
THE END
暂无评论内容