小编Jit*_*esh的帖子

更改String对象时的Java String Immutability存储

据我所知,如果使用文字初始化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如果它在字符串池中创建一个新文字,那么当前存在的对象会发生什么?是否会被破坏,或者它会在那里被调用垃圾收集器.

这是一个小字符串,如果字符串是成千上万的字符,那么我只是担心它使用的空间.所以我的关键问题是空间.

在分配文字后,它会立即从堆中释放空间吗?

任何人都可以解释从第一个语句到第二个语句的值是什么,以及内存区域(堆和字符串池)会发生什么.

java oop string heap immutability

9
推荐指数
1
解决办法
600
查看次数

标签 统计

heap ×1

immutability ×1

java ×1

oop ×1

string ×1