String 和 new String()区别

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在堆中又重新开辟了空间,两者并不是同一个空间,故地址不同。


猜你喜欢

转载自blog.csdn.net/steppppup/article/details/79503585