3

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

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

4

2 回答 2

8

我从方法调用或 StringBuilder.toString() 获得了一个字符串对象,这个字符串是否被添加到字符串池中?

StringBuilder.toString()--> (creates and ) 返回一个在堆上的字符串(不在字符串常量池上)。

如果您return "hi"在您的方法中这样做,则将返回字符串常量池的 hi 引用。

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

于 2015-01-12T14:04:05.053 回答
5

你可以调用intern()一个String对象。如果 String 对象不存在,这会将其放入池中,并返回对池化字符串的引用。(如果它已经在池中,它只返回对已经存在的对象的引用)。

于 2015-01-12T14:05:31.510 回答