На странице собраны вопросы по Java — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: java, backend, database.
Вывод — true, false, false. В объяснении условия есть ошибка: String.valueOf(Object) не обязан создавать строку; здесь он вызывает toString у уже созданного String и возвращает тот же объект.
В современных JDK этот код может вообще ничего не вывести: count() способен получить известный размер Stream.of без обхода элементов. Наличие терминальной операции не гарантирует выполнение peek.
Вывод: true, false, true, true. Оператор == сравнивает ссылки, а String.equals — последовательность символов, поэтому отдельный объект third равен первым по содержимому.
Java всегда передаёт аргументы по значению: для объекта копируется ссылка. После doIt переменная a указывает на объект №1, instanceNumber = 1, x = 12, y = 22, z = 3.
При overriding можно сохранить throws, убрать checked-исключения или сузить их типы. Нельзя добавить более широкое либо несвязанное checked-исключение; unchecked-исключения не ограничены таким правилом.
Ничего не будет напечатано. Оба map — промежуточные ленивые операции, а терминальной операции в цепочке нет, поэтому обработка элементов не начинается.
Результаты по порядку: true, false, true, false. Литералы и константная конкатенация интернируются, а выражение с обычной переменной c вычисляется во время исполнения.
Код компилируется: raiseChecked объявляет throws, а main перехватывает CheckedException. Сначала печатается Caught checked exception, затем необработанный UncheckedException завершает main.
Первые три проверки дадут true. Последняя обычно false, но для 300 идентичность boxed-объектов не гарантирована и может зависеть от расширенного cache. Для Integer == сравнивает ссылки.
В HotSpot можно выбрать Epsilon — сборщик, который выделяет память, но не освобождает мусор. Он предназначен для специальных сценариев и измерений, а не обычного долгоживущего сервиса.