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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 光sail 中级黑马   /  2012-4-18 09:29  /  1254 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一直以来不明白 String str =”sss” 与String str =new String(“sss”)的区别,看了论坛和网上的相关解答,有了一些心得,原来里面涉及到一个名为字符串池(
StringPool)的概念
String str =”sss” 采取字面值赋值
1) 查找字符串池有无sss,没有则在字符串池中创建sss对象,并把str引用指向sss对象,
2) 如果有,则直接指向存在对象
String str =new String(“sss”)
1) 首先在字符串池查找是否有无sss对象,有则不再字符串池创建,而在堆中创建,地址返回给str
2) 字符串池没有sss对象,则在池中创建sss对象,然后再堆中创建对象,将堆中的对象地址返回给str

0 个回复

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