Java generi c Целочисленные данные по сравнению с примитивными данными типа int - PullRequest
0 голосов
/ 19 февраля 2020

Я знаю, что в Java мы можем использовать generi c типы данных по разным причинам. Тем не менее, с точки зрения хранения данных . Если примитив int в Java может хранить до 2 147 483 647 значений со знаком, применяется ли такая же емкость хранения для типа Integer generi c? Кроме того, влияет ли тип данных, выбранный в программе, на время выполнения каким-либо образом? Или это в большей степени влияет на пространственно-временную сложность программы? Мой главный вопрос заключается в том, что если я придерживаюсь типа данных, который является довольно небольшим, но подходящим для потребностей моих программ, то поможет ли он каким-либо образом моей программе работать быстрее?

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Да, ограничения все еще существуют.

Вы не должны относиться к Integer как к этому магическому объекту, все, что это - объект, который содержит int, называемый value. Таким образом, без автоматической упаковки и распаковки вы можете технически создать свой собственный класс-оболочку Integer. Integer - это почти то же самое, что и int, за исключением того, что это объект.

По поводу вашего основного вопроса о скорости, Integer это просто крошечный бит медленнее, но я не думаю, что вам стоит беспокоиться об этом. Это только медленнее, потому что Objects должен быть выделен в пространстве кучи.

0 голосов
/ 19 февраля 2020

Да, применяются те же ограничения.

Вы можете увидеть источник класса Integer здесь:

http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/lang/Integer.java

Строка 840 показывает, что целое число поддерживается простым int:

private final int value;

Так что, какие бы ограничения ни имел int, Integer также имеет.

...