使用 tostring 方法创建的字符串对象在 Java 的内存中存储在哪里?
我正在做一个作业,我得到了以下问题。
使用存储在内存中的方法创建的字符串对象在哪里?toString()
String a = Integer.toString(10);
- 在恒定池中
- 在堆上(新操作员对象的区域)
我正在做一个作业,我得到了以下问题。
使用存储在内存中的方法创建的字符串对象在哪里?toString()
String a = Integer.toString(10);
它们都进入堆内存。只有字符串文本和暂存字符串进入字符串常量池。
唯一的例外是类,如:String
public String toString() {
return this;
}
它只返回当前字符串(如果它在堆上,它从堆返回/如果它在字符串常量池上,它从字符串常量池返回)
注意:如果未覆盖以显式返回字符串文本,则始终在堆上创建字符串表示形式(ClassName@hexValueOfHashCode)。toString()
这取决于您正在调用的方法的实现。toString()
该方法创建对象,因此根据它执行此操作的方式(以及它是否在字符串中),返回的将位于字符串池中。toString()
String
String
请注意,这只是一个像任何其他方法一样的方法。没有任何魔术可以以任何特殊方式处理方法的返回值。(例如,返回的 字符串不会自动滞留)。它的工作方式与返回 .toString()
toString()
toString()
String