В Java явно объявленные строки прерваны JVM, так что последующие объявления одной и той же строки приводят к двум указателям к одному экземпляру String, а не к двум отдельным (но идентичным) строкам.
Например:
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 отдельных строк?