В своих заметках я обнаружил следующее, но не могу в этом разобраться:
Классы-оболочки примитивных типов реализуют кэширование для ограниченного числа значений.
Это гарантирует, что ограниченное количество глубоко одинаковых объектов оболочки также неглубоко равны: Еслиo1.equals (o2)
, тоo1 == o2
.
Например,новое целое число (0) == новое целое число (0)
.
В общем, это не всегда работает.
Например, новое целое число (666) == новое целое число (666)
может не выдержать.
Причина кеширования в том, что оно экономит память.
В общем, кеширование работает для «малых» примитивных значений.
Я не понимаю, что имеется в виду, или в чем разница между глубоким (.equals ()) и мелким (==) равенством. На практике я знаю, что .equals нужно использовать для объектов и == для интегральных значений, но фактическое объяснение этого намекает на меня.
Я предполагаю, что мелкие имена могут просто проверять, что оба значения относятся к одному типу и имя, которое глубоко проверяет, что обе переменные указывают на один и тот же объект? Однако я не понимаю, как кеширование может быть здесь задействовано или почему оно может быть полезно.