Когда у нас есть классы-обертки, почему поддерживаются примитивы? - PullRequest
6 голосов
/ 14 января 2010

У нас есть классы-обертки в java, такие как Interger, Float ... почему он все еще поддерживает примитивы, которые мешают Java полностью объектно-ориентированному языку?

Ответы [ 3 ]

6 голосов
/ 14 января 2010

Обертки, будучи объектами, помещаются в кучу. Примитивы - это просто «значения» и идут в стек. Это более эффективно, поскольку для обернутых примитивов в куче необходимо (как минимум) и значение (которое находится в стеке) и ссылка на объект-оболочку.

То, имеет ли это увеличение производительности какое-либо значение, зависит от того, что вы делаете. Для тяжелой числовой работы, безусловно, но для 99% всего этого, это скорее раздражение. Во-первых, вы все равно не можете хранить примитивы в Коллекции; они получают автоматическую коробку. Поэтому единственный способ хранить множество из них - использовать простые массивы, что, в свою очередь, может привести к другим видам неэффективности (например, если вам необходимо изменить их размер).

3 голосов
/ 14 января 2010

Поскольку примитивы легче и эффективнее с точки зрения использования памяти и процессора.

2 голосов
/ 14 января 2010

Одним словом: производительность.

Типы обёрток также являются неизменяемыми, что делает его более дорогим, например, если вы хотите использовать его для счетчика цикла.

JVM также имеет коды операций для непосредственного выполнения арифметики примитивов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...