TGViewer
Art of Code Art of Code @codeof_art · 2.18K subscribers
Post #281 3.94K
Задача на сравнение строк в джаве

public static void main(String[] args) {
String based1 = "Я стажёр и работаю за компот";
String based2 = "Я стажёр и работаю за компот";

String based3 = new String("Я стажёр и работаю за компот");
String based4 = new String("Я стажёр и работаю компот");
String based5 = new String("Я стажёр и работаю за компот").intern();

System.out.println(based1 == based2);
System.out.println(based1 == based3);
System.out.println(based3 == based4);
System.out.println(based4 == based5);
System.out.println(based1 == based5);
}

Что выведется на экране при сравнении этих строк?

Результат
true
false
false
false
true


Объяснение
based1 и based2 - строковые литералы одинаковы, джава помещает их в String Pool, где ссылки переменных указывают на один и тот же объект.
based3 создаётся через конструктор new => значение литерала находится в пуле, но new String() создаёт новый объект в куче, и ссылка указывает именно на этот новый объект.
based4 - ещё один новый объект в куче, отличный от based3.
based5 - применяем метод intern(), который ищет строку в пуле и возвращает ссылку на объект из пула, а не созданный через new (если не находит, то добавляет строку в пул).


Немножко о строках в java

String в джаве - неизменяемый тип. Это позволяет хранить строковые литералы в специальной области в куче - String Pool и оптимизировать память (если значение уже есть в пуле, то новое не создаётся, а возвращается ссылка на старый объект без выделения дополнительной памяти). Если же строка создаётся динамически (с помощью конструктора), то новый объект создаётся в куче в любом случае.

@codeof_art
  • 🔥 3
  • ❤ 2
More from @codeof_art
  1. Sep 22, 2026Новый пост из серии про паттерны на реальном коде. Разбираем штуку, с которой рано или поз…
  2. Sep 21, 2026Полный цикл собесов в Яндекс (Бэкенд 2026) Сейчас студенты наших курсов под чутким сопрово…
  3. Sep 20, 2026❗️ Яндекс открыл Intern Week Offer на стажировку, где всего за неделю ты можешь получить о…
  4. Sep 19, 2026Товарищи, Поступашкам нужны контент мейкеры в основной канал по алгоритмам и другим дисцип…
  5. Sep 17, 2026System Design: backend Сегодня разберём задачу, которую мне давали на собесе в Яндекс. Шту…
  6. Sep 16, 2026В Яндекс без опыта с первого раза Товарищи, продолжаем рассказывать про наших талантливых…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →