
Когда создаётся объект одной из этих оболочек с помощью метода valueOf(), то сначала метод проверяет, находится ли переданное значение в диапазоне от -128 до 127. Если да, то метод возвращает ссылку на значение из своего массива, если нет - создаёт новый объект.
При каждом вызове оператора new будет создаваться новый объект, независимо от переданного значения.
Long var1 = Long.valueOf(123);
Long var2 = Long.valueOf("123");
System.out.println(var1 == var2); // true
Long var3 = Long.valueOf(223);
Long var4 = Long.valueOf(223);
System.out.println(var3 == var4); // false