黑马程序员技术交流社区

标题: String s1="a"和new String(“a”)的区别: [打印本页]

作者: 你的昵称    时间: 2016-7-10 10:59
标题: String s1="a"和new String(“a”)的区别:
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 ,意思是在常量池另外新建一个地址;
所以它们的常量池内的地址识别不一样的!



作者: 呆呆的小呆    时间: 2016-7-10 11:00
赞赞赞赞赞
作者: 664941114    时间: 2016-7-10 11:22
正解,之前也对这有疑问,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2