JAVA String 创建问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 12:35:12
String s = "abc";
String s = new String("abc");
什么区别,有些记不得了。

String s = "abc";
上面这个abc只是放在常量池中

String s = new String("abc");
这个在常量池和堆上都有一个

s = "abc";
s1 = "abc"; 这种情况java不会创建两个对象,而是一个对象 都赋值abc

s = new String("abc");
s1 = new String("abc"); 这种情况java创建两个对象 分别赋值abc

如果不new一个的话,编译器会在内存里找,此时的s就相当于一个c++的指针,如果你还有个变量叫 s2="abc" 那么当你改变s的值,s2的值也变了,java还是有指针的,不过简单多了

更正2楼:

s值变化的时候,s2的值是不会跟着变化的