В чем разница между Integer и int в Java?



например, почему вы можете сделать:



int n = 9;


но нет:



Integer n = 9;


и вы можете сделать:



Integer.parseInt("1");


но нет:



int.parseInt("1");
914   12  

12 ответов:

int является примитивным типом. Переменные типа int сохраните фактическое двоичное значение для целого числа, которое вы хотите представить. int.parseInt("1") не имеет смысла, потому что int и не класс и поэтому не имеет никаких методов.

Integer это класс, ничем не отличающийся от любого другого в языке Java. Переменные типа Integer магазине ссылки до Integer объекты, как и с любым другим ссылочным (объектным) типом. Integer.parseInt("1") - это вызов статический метод parseInt класса Integer (обратите внимание, что этот метод на самом деле возвращает int, а не Integer).

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

обратите внимание, что каждый примитивный тип в Java имеет эквивалент фантик класс:

  • byte и Byte
  • short и Short
  • int и Integer
  • long и Long
  • boolean и Boolean
  • char и Character
  • float и Float
  • double и Double

классы-оболочки наследуют от класса Object, и примитивный не. Поэтому он может быть использован в коллекции с объекта ссылка или с дженериками.

С java 5 у нас есть автобоксинг, и преобразование между примитивом и классом оболочки выполняется автоматически. Однако будьте осторожны, так как это может привести к тонким ошибкам и проблемам с производительностью; быть явным о преобразованиях никогда не повредит.

Integer-это класс, а int-примитивный тип.

читайте дальше по этим ссылкам:

целое число-это просто обертка для примитивного типа int. Это позволяет использовать все функции класса Integer, чтобы сделать жизнь немного проще для вас.

Если вы новичок в Java, то вы должны научиться ценить документацию Java. Например, все, что вы хотите знать о Integer Класс подробно документировано.

это прямо из документации для целого класса:

в Класс Integer обертывает значение примитивного типа int в объект. Объект типа Integer содержит одно поле, тип которого-int.

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

в вашем примере как под.

Integer n = 9;

постоянной 9 идет авто-коробочные (auto-boxing и unboxing происходит автоматически от java 5 года) к Integer и поэтому вы можете использовать оператор, как это, а также Integer n = new Integer(9). Это фактически достигается с помощью утверждения Integer.valueOf(9).intValue();

переменная int содержит 32-разрядное целое число со знаком. Целое число (с заглавной буквы I) содержит ссылку на объект (класс) типа Integer или null.

Java автоматически выполняет приведение между ними; от Integer до int всякий раз, когда объект Integer встречается в качестве аргумента оператору int или присваивается переменной int, или значение int присваивается целочисленной переменной. Это кастинг называется бокс / распаковка.

Если целочисленная переменная, ссылающаяся на null при распаковке явно или неявно создается исключение NullPointerException.

(в приведенном тексте, термин "переменная" означает локальную переменную, поле или параметр)

int-это примитивный тип, а не объект. Это означает, что нет никаких методов, связанных с ним. Integer-это объект с методами (например, parseInt).

С новой java есть функциональность для автоматического бокса (и распаковки). Это означает, что компилятор вставит целое число.метод valueOf(int) или целое число.intValue () там, где это необходимо. Это означает, что на самом деле можно написать

Integer n = 9;

трактуется как

Integer n = Integer.valueOf(9);

Integer-это класс-оболочка / объект, а int-примитивный тип. Это различие играет огромную роль, когда вы хотите хранить значения int в коллекции, потому что они принимают только объекты в качестве значений (до jdk1.4). JDK5 вперед из-за автобоксинга это совершенно другая история.

int - Это примитивный тип, представляющий целое число. тогда как Integer - это объект, который обертывает int. Элемент

для оптимизации выполнения кода Java,intпримитивный тип(ы) был добавлен в том числе float,bool etc. но они приходят вместе с wrapper-классы так что при необходимости вы можете конвертировать и использовать их в качестве стандартного объекта Java вместе со многими утилитами, которые входят в их функции-члены (например,Integer.parseInt("1")).

в Java int является примитивным типом данных, а Integer-вспомогательным классом, он используется для преобразования одного типа данных в другой.

например:

         double doubleValue = 156.5d;
         Double doubleObject  = new Double(doubleValue);
         Byte myByteValue = doubleObject.byteValue ();
         String myStringValue = doubleObject.toString();

примитивные типы данных хранят самую быструю память, где вспомогательный класс является сложным и хранить в памяти.

ссылка из" David Gassner " Java Essential Training.

int - Это примитивный тип данных, в то время как Integer - Это тип ссылки или оболочки (класс) в Java.

после java 1.5 которые вводят понятие автоупаковка и анбоксинг вы можете инициализировать оба int или Integer такой.

int a= 9
Integer a = 9 // both valid After Java 1.5.

почему Integer.parseInt("1"); а не int.parseInt("1"); ??

Integer - это класс, определенный в jdk библиотеки и parseInt() статический метод принадлежит Integer Класс

и Integer.parseInt("1"); возможно в java. но int является примитивным типом (предположим, как ключевое слово) в java. Так что, вы не можете позвонить parseInt() С int.

Это взято из Java: Полная Ссылка, Девятое Издание

Java использует примитивные типы (также называемых простыми типами), например,int или двойной, для хранения основных типов данных, поддерживаемых язык. примитивные типы, а не объекты, используемые для этих количество для ради производительности. Использование объектов для этих значений добавил бы недопустимо накладные расходы даже самый простой из проведенные расчеты. Таким образом,примитивные типы не являются частью объекта иерархия и они не наследуют объект.

несмотря на производительность преимущество, предлагаемое примитивными типами, есть моменты, когда вы будете нужно представление объекта. Например, вы не можете пройти примитивный введите по ссылке на метод. Кроме того, многие стандартные данные структуры, реализованные Java работайте на объектах, а это значит, что вы не можете использовать эти (объектно-ориентированные) структуры данных для хранения примитивных типов. К обрабатывая эти (и другие) ситуации, Java предоставляет оболочки типов, которые являются классами, инкапсулирующими примитивный тип внутри объекта.

классы-оболочки относятся непосредственно к Java автоупаковка особенность. Тип обертки Double, Float, Long, Integer, Short, Байт, символ и логическое значение. Эти классы предлагают широкий спектр методов, которые позволяют полностью интегрировать примитивные типы в Иерархия объектов Java.

Comments

    Ничего не найдено.