Оператор == порівнює адреси в памʼяті. Кожного разу, коли ти пишеш String = "..."
, програма перевіряє, чи існує вже такий рядок у пулі рядків. Якщо так — новий створюватися не буде. І нове посилання вказуватиме на ту ж саму адресу в пулі рядків, де цей рядок уже зберігається.
Пул рядків (String Pool) — це область для збереження всіх рядкових значень, які ти створюєш у своїй програмі.
Для чого його створили? Рядки займають величезну частину серед усіх обʼєктів. У будь-якій великій програмі створюється дуже багато рядків. З метою економії памʼяті й існує String Pool — туди поміщається рядок із потрібним тобі текстом, і надалі нові посилання посилаються на ту саму область памʼяті, без потреби кожного разу виділяти нову.