您的位置:首页 > 其它

String 和 new String()区别

2018-03-09 22:09 375 查看
1.String str1 = "abc";
  String str2 = "abc";
sysout(str1==str2)  为 TRUE
解释:栈中str1和str2都直接指向常量池中“abc”,==比较地址,地址一样。
2.
String str1 = "abc";
  String str2 = new String(“abc”);
sysout(str1==str2);为FALSE
解释:str1指向常量池中“abc”,str2指向堆中新开辟的空间,所以地址不一样。
3.
String str1 = "abc";
Stirng str2 = “ab”;
str2=str2+“c”;
sysout(str1==str2);为FALSE

解释:str1指向常量池“abc”,str2指向堆中新开辟的空间,故地址不同。
4.
  String str1 = new String(“abc”);

  String str2 = new String(“abc”);

sysout(str1==str2);为FALSE

解释:str1指向堆中开辟的空间,str2在堆中又重新开辟了空间,两者并不是同一个空间,故地址不同。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  常量池