🔍 Продолжаем рубрику, в которой разбираем небольшие фрагменты кода и ищем в них неочевидные особенности, ошибки и подводные камни, которые могут встретиться даже в самых простых на первый взгляд задачах. 📱 Сегодня короткий пример на Java, где всё выглядит логично… но результат может удивить ⬇️ Integer a = 127; Integer b = 127; System.out.println(a == b); Вопрос: Что выведет консоль? Кажется, что ответ очевиден: true И действительно именно таким и будет результат. Но теперь посмотрим на почти такой же код: Integer a = 128; Integer b = 128; System.out.println(a == b); А здесь консоль уже выведет: false ❓ Почему так происходит На первый взгляд оба примера одинаковые: создаются два объекта Integer, которые хранят одно и то же значение. Но дело в том, что Java использует Integer Cache — внутренний механизм кэширования объектов-обёрток для чисел в диапазоне от -128 до 127. Это значит, что в первом примере: Integer a = 127; Integer b = 127; обе переменные ссылаются на один и тот