新手求解关于字符串的有关问题
新手求解关于字符串的问题。
String s="abc"; 和String s=new String("abc"); 这二者有什么不同吗?
------解决思路----------------------
从执行过程出发:
String s="abc"
执行时,编译器会先去String常量池是寻找,如果在常量池中找到了"abc",则把abc引用赋给s;
eg: String s="abc"; String s1="abc"; 则s==s1;
String s=new String()
执行时,不管常量池中有没有,都会在堆内存中开辟一个新地址,再把地址引用赋给s;
eg: String s=new String("abc"); String s1="abc"; 但其实s!=s1;
String s="abc"; 和String s=new String("abc"); 这二者有什么不同吗?
------解决思路----------------------
从执行过程出发:
String s="abc"
执行时,编译器会先去String常量池是寻找,如果在常量池中找到了"abc",则把abc引用赋给s;
eg: String s="abc"; String s1="abc"; 则s==s1;
String s=new String()
执行时,不管常量池中有没有,都会在堆内存中开辟一个新地址,再把地址引用赋给s;
eg: String s=new String("abc"); String s1="abc"; 但其实s!=s1;