字符串的创建辨析

zsha 2024-07-21 16:39:00 阅读 83

字符串创建辨析

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。