String a = "test";
String b = "whatever";
String c= "test";
System.out.println(a == c); //true
我假设这是正确的,因为字符串是不可变的,因此这些字符串是相同的,因此 Java 将指向c
'a
在内存中的位置。
String a = "test";
String b = "whatever";
String c= new String("test");
System.out.println(a == c); //false
我假设通过调用new
操作符,Java 必须分配新的内存,所以它不能选择指向a
.
我的问题是:
String d="a";
d="rbf";
d="ergfbrhfb";
d="erhfb3ewdbr";
d="rgfb";
//...
- 中间分配的内存分配发生了
d
什么? - 如果后续分配的字符数相同,这个答案会改变吗?(即,
d="abc"; d="rfb";
) - 是否为每次更改分配了新内存
d
? - 如果是这样,为每个分配分配的内存何时再次空闲?