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在堆中又重新开辟了空间,两者并不是同一个空间,故地址不同。
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在堆中又重新开辟了空间,两者并不是同一个空间,故地址不同。
相关文章推荐
- JavaScript中String与New String的区别
- new String("abc")与String a="abc"的区别
- String与new String()的区别
- Java中String和new String的区别,比较
- String与new String的区别
- String直接赋字符串和new String的区别
- String直接赋字符串和new String的区别
- string与new string跟StringBuffer和StringBuilder的区别
- String 和 new String()的区别
- new String() 和 String 的区别
- Java中String直接赋字符串和new String的区别
- java 中堆和栈的区别 已经String和new String()的区别
- String 和 new String的区别
- String直接赋字符串和new String的区别
- [java] "Hello"和new String("Hello")产生String对象的区别
- Java中String直接赋字符串和new String的区别
- String与new String的区别
- Java String =“ ”和 new String的区别详解
- java 中的String 和new String 的区别
- String使用字面值常量赋值与new String()赋值的区别