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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.String s1="a";
2.String s1=new String(“a”);
先说常量池的概念:值在编译期间,被保存的一些字节码和数据,比如字符串常量!
先说一下1;
举个例子:
String s1="a";
String s2="a";
很明显s1==s2,它们指向常量池的同一个地址,也就是说s2复用了s1的字符 a!

再来说2;
同样是举例子:
String s1=new String(“a”);
String s2=new String(“a”);
这个时候s1 != s2;
因为==是指是否为同一个对象(在常量池内的地址是否一样)!
很明显有个new ,意思是在常量池另外新建一个地址;
所以它们的常量池内的地址识别不一样的!


2 个回复

倒序浏览
赞赞赞赞赞
回复 使用道具 举报
正解,之前也对这有疑问,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马