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 ,意思是在常量池另外新建一个地址;
所以它们的常量池内的地址识别不一样的!
|
|