Данный код создает только один объект в String constant pool.
String s1="HelloWorld";
String s2="HelloWorld";
String s3="HelloWorld";
Когда ты объявляешь несколько переменных типа String, используя строковые литералы (текст в двойных кавычках), Java сохраняет их в String constant pool для экономии памяти. Поскольку все три переменные ссылаются на одинаковое значение "HelloWorld", они все указывают на один единственный объект в памяти.
s1, s2, s3) ссылаются на один и тот же адрес в памятиЭто поведение применяется только к строковым литералам. Если бы ты создавал строки с помощью ключевого слова new, каждая создала бы отдельный объект:
String s1 = new String("HelloWorld");
String s2 = new String("HelloWorld");
В этом случае были бы созданы три объекта — один в pool и два дополнительных объекта в heap.
Ключевой принцип в том, что String constant pool обеспечивает эффективное использование памяти, сохраняя только одну копию каждого уникального строкового литерала, независимо от того, сколько переменных на него ссылаются.
Когда несколько переменных присваиваются одному и тому же строковому литералу, все они ссылаются на один и тот же объект в String constant pool.
Новый — ещё не проверен сообществом
Вы