在运行时可以将字符串添加到字符串池吗?

时间:2015-01-12 14:02:23

标签: java heap-memory string-pool

如果我从方法调用或StringBuilder.toString()获取字符串对象,该字符串是否会添加到字符串池中?

仅在类加载期间是否将String添加到池中?

2 个答案:

答案 0 :(得分:8)

我从方法调用或StringBuilder.toString()获取字符串对象,此字符串是否会添加到字符串池中?

StringBuilder.toString() - > (created和)返回堆上的String(不在String常量池上)。

如果你在方法中执行return "hi",那么将返回String常量池的hi的引用。

可以在运行时通过调用它们上的intern()将字符串添加到字符串常量池中。

答案 1 :(得分:5)

您可以在intern()对象上拨打String。这将把String对象放在池中(如果它尚不存在),并返回对池化字符串的引用。 (如果它已经在池中,它只返回对已存在的对象的引用)。