在 Java 中,显式声明的字符串被 JVM 隔离,因此同一字符串的后续声明会导致两个指向同一字符串实例的指针,而不是两个单独(但相同)的字符串。
例如:
public String baz() {
String a = "astring";
return a;
}
public String bar() {
String b = "astring"
return b;
}
public void main() {
String a = baz()
String b = bar()
assert(a == b) // passes
}
我的问题是,CPython(或任何其他 Python 运行时)是否对字符串做同样的事情?例如,如果我有一些课程:
class example():
def __init__():
self._inst = 'instance'
并创建该类的 10 个实例,它们中的每一个是否都有一个实例变量引用内存中的相同字符串,或者我最终会得到 10 个单独的字符串?