Ваш вопрос задом наперед.Примитивные типы являются более фундаментальными, чем их обертки.
Действительно единственная полезная вещь, которую дают обертки, - это возможность обращаться с ними как с подклассом Object (чтобы их можно было помещать в коллекции и т. Д.).Все действительно полезные вещи (такие как арифметика и упорядочение) обеспечиваются примитивным типом.
Обратите внимание, что хотя вы можете говорить такие вещи, как:
Integer i = Integer.valueOf(4);
Integer j = Integer.valueOf(2);
Integer k = i + j;
, это просто удобство.Внизу последняя строка выглядит примерно так:
Integer k = Integer.valueOf(i.intValue() + j.intValue());
, так что арифметика встречается с примитивными значениями.(Это удобство известно как упаковка / распаковка.) Это снижает производительность, так что на моей машине этот цикл:
for (int i=0; i<10000000; i++) { }
примерно в 10 раз быстрее, чем этот цикл:
for (Integer i=0; i<10000000; i++) { }