A
Art of Code
@codeof_art2.2K подп.
3.4Kпросмотров
29 декабря 2025 г.
Score: 3.7K
Задача на сравнение строк в джаве 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.4K
просмотров
1719
символов
Нет
эмодзи
Нет
медиа

Другие посты @codeof_art

Все посты канала →
Задача на сравнение строк в джаве public static void main(St — @codeof_art | PostSniper