Java では、明示的に宣言された文字列は JVM によってインターンされます。そのため、同じ文字列の後続の宣言は、2 つの別個の (しかし同一の) 文字列ではなく、同じ文字列インスタンスへの 2 つのポインターになります。
例えば:
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 個の個別の文字列になってしまうでしょうか?