如果我从方法调用或StringBuilder.toString()
获取字符串对象,该字符串是否会添加到字符串池中?
仅在类加载期间是否将String添加到池中?
答案 0 :(得分:8)
我从方法调用或StringBuilder.toString()获取字符串对象,此字符串是否会添加到字符串池中?
StringBuilder.toString()
- > (created和)返回堆上的String(不在String常量池上)。
如果你在方法中执行return "hi"
,那么将返回String常量池的hi的引用。
可以在运行时通过调用它们上的intern()将字符串添加到字符串常量池中。
答案 1 :(得分:5)
您可以在intern()
对象上拨打String
。这将把String对象放在池中(如果它尚不存在),并返回对池化字符串的引用。 (如果它已经在池中,它只返回对已存在的对象的引用)。