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

Can a String be added to string pool during run-time?

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

是否仅在 class 加载期间将字符串添加到池中?

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

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

如果你在你的方法中做return "hi",那么字符串常量池的 hi's 引用将被返回。

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

您可以在 String 对象上调用 intern()。这会将 String 对象放入池中(如果它尚不存在),并且 return 是对池中字符串的引用。 (如果它已经在池中,它只是 return 对已经存在的对象的引用)。