据我所知,如果使用文字初始化String,则会在String Pool中分配一个空格,如果使用新的Keyword初始化,则会创建String的对象.但我对下面写的案例感到困惑.
我的问题是,如果使用new关键字创建String,然后使用文字更新值?
例如
String s = new String("Value1"); -- Creates a new object in heap space
Run Code Online (Sandbox Code Playgroud)
那么如果写下面的语句怎么办呢.
s = "value2";
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,
1它是否会在字符串池中创建字符串文字,还是会更新该对象的值?
2如果它在字符串池中创建一个新文字,那么当前存在的对象会发生什么?是否会被破坏,或者它会在那里被调用垃圾收集器.
这是一个小字符串,如果字符串是成千上万的字符,那么我只是担心它使用的空间.所以我的关键问题是空间.
在分配文字后,它会立即从堆中释放空间吗?
任何人都可以解释从第一个语句到第二个语句的值是什么,以及内存区域(堆和字符串池)会发生什么.