字符串的创建辨析

打印 上一主题 下一主题

主题 907|帖子 907|积分 2721

字符串的创建辨析

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表