我知道如果一个字符串是用文字初始化的,那么它会在字符串池中分配一个空间,如果用新的关键字初始化它会创建一个字符串的对象。但我对下面写的一个案例感到困惑。
我的问题是,如果使用 new 关键字创建字符串,然后使用文字更新它的值怎么办?
例如
String s = new String("Value1"); -- Creates a new object in heap space
那么如果写下一条语句如下。
s = "value2";
所以我的问题是,
1 它会在字符串池中创建字符串文字还是会更新该对象的值?
2 如果它在字符串池中创建一个新的文字,当前存在的对象会发生什么?它会被销毁还是会一直存在,直到调用垃圾收集器。
这是一个小字符串,如果字符串包含数千个字符,那么我只是担心它使用的空间。所以我的关键问题是空间。
分配文字后,它会立即从堆中释放空间吗?
谁能解释从第一条语句到第二条语句的值是什么以及内存区域(堆和字符串池)会发生什么。