new String(«Hello_42») == «Hello_» + 42
Вопросы такого типа, о сравнении строковых и числовых констант, задают для проверки знаний о пуле строк (string pool) или, как его ещё называют пул литералов (literal pool). Он нужен для оптимизации использования компилятора. Если строка встречается несколько раз, то компилятор Java заменяет все упоминания таких строк ссылкой на её экземпляр. Благодаря этому, строка храниться в одном экземпляре, что позволяет уменьшить размер модуля. Это можно осуществить благодаря неизменяемости класса String. Такая оптимизация называется интернирование строк.
Поэтому выражение «Hello» == «Hello» является истинным. Интернирование применяется также и константам. В нашем случае константой является число 42, которое приводится к строке и в результате осуществляется конкатенация констант. Поэтому, выражение «Hello_42» == «Hello_» + 42, также является истинным.
Поэтому, представленное выражение String(«Hello_42») == «Hello_» + 42 ложно.
"Hello" == "Hello"
"Hello" == OtherClass.HELLO
new String("Hello") != "Hello"
"42" != Integer.toString[42)
new String("New string").intern() == "New string"
"Hello " + "world" = "Hello world"
"Hello " + new String("world") != "Hello world"
<Java>#
Как в продуктовой команде
AI Sprints — обучение профессиям с ИИ
Kanban-доска, код-ревью и Git Flow. Учитесь работать в процессах, которые используют в продакшене — задачи, как в Jira
- Kanban: доска задач как в Jira — привыкаете к инструментам с первого дня
- Процессы: код-ревью, Git workflow, спринты — как на реальной работе
- Треки: Android, Backend, QA — полный цикл разработки
AI Challenge — собери чат-бота за 5 дней
Бесплатный марафон по AI-инжинирингу. Cursor + OpenAI, 60 минут в день — без опыта в программировании. К пятнице у вас будет рабочий чат-бот с памятью в браузере.
- Практика с первого дня, без теории «в стол»
- Готовый проект в портфолио к концу недели
- Старт в любой день — учитесь в своём темпе