целое число является классом, int является примитивным типом
Anycorn
24
Вы можете сделать это Integer n = 9;из-за автобокса (если вы не используете очень старую версию Java)
Alderath
Ответы:
321
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, а примитивы - нет. Таким образом, он может быть использован в коллекциях со ссылкой на объект или с помощью Generics.
Начиная с Java 5 у нас есть автобокс, и преобразование между примитивом и классом-оберткой выполняется автоматически. Однако будьте осторожны, так как это может привести к незначительным ошибкам и проблемам с производительностью; Быть откровенным о преобразованиях никогда не повредит.
Я хочу отметить, я думаю, что это идеальный ответ по двум причинам: 1- Краткий и точный, с учетом аудитории / спрашивающего 2- Предоставляет направление для дополнительной информации, а не помещает все это в текст ответа Не все На вопросы можно ответить точно и кратко (некоторые требуют гораздо больше подробностей и нюансов, чтобы быть точными и полными), но я думаю, что все ответы должны быть такими простыми и прямыми.
DRich
11
Хех, я думаю, что на самом деле все наоборот. «int - это примитивный тип» ничего вам не говорит, если вы не знаете, что такое примитивный тип. (И если да, то вы, скорее всего, уже знаете разницу между int и Integer). И отправка читателю по двум ссылкам, помеченным как «Ссылка 1» и «Ссылка 2», довольно бесполезна, особенно по сравнению с простым цитированием соответствующих разделов.
Стив Беннетт
7
Integer - это просто оболочка для примитивного типа int. Он позволяет вам использовать все функции класса Integer, чтобы облегчить вам жизнь.
Если вы новичок в Java, вы должны научиться ценить документацию по Java. Например, все, что вы хотите знать о классе Integer, подробно описано в документации.
Это прямо из документации для класса Integer:
Класс Integer оборачивает значение примитивного типа int в объект. Объект типа Integer содержит одно поле, тип которого int.
Это несколько упускает из виду. Например, как Integerи класс, он может храниться в контейнерах (в отличие от примитивных типов).
Оливер Чарльзуорт
6
Переменная int содержит 32-разрядное целое число со знаком. Integer (с заглавной I) содержит ссылку на объект (класса) типа Integer или на ноль.
Java автоматически приводит между ними; от Integer до int всякий раз, когда объект Integer встречается в качестве аргумента оператора int или назначается переменной int, или значение int присваивается переменной Integer. Этот кастинг называется бокс / распаковка.
Если целочисленная переменная, ссылающаяся на null, является явной или неявной, без нее, создается исключение NullPointerException.
(В приведенном выше тексте термин «переменная» означает локальную переменную, поле или параметр)
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 является примитивным типом, а не объектом. Это означает, что нет никаких методов, связанных с этим. Integer - это объект с методами (например, parseInt).
С более новой Java есть функциональность для автоматического бокса (и распаковки). Это означает, что компилятор вставит Integer.valueOf (int) или integer.intValue (), где это необходимо. Это означает, что на самом деле можно написать
Integer - это класс-обертка / Object, а int - примитивный тип. Эта разница играет огромную роль, когда вы хотите сохранить значения int в коллекции, потому что они принимают только объекты в качестве значений (до jdk1.4). JDK5 и дальше из-за автобокса это совсем другая история.
JDK5 + также принимает только объекты; это просто, что autoboxing позволяет компилятору автоматически вызывать Integer.valueOf(i)или Integer.intValue()для вас. Collection<int>все равно не будет работать. Так что это не совсем другая история - это та же самая история, с небольшим сокращением.
ишавит
согласовано. Извините, моя формулировка может не отражать это.
Коса
3
В Java int является примитивным типом данных, а Integer является классом Helper, он используется для преобразования одного типа данных в другой.
intпримитивный тип, представляющий целое число в то время Integerкак объект, который оборачивает int. IntegerОбъект дает вам больше функций, таких как преобразование в шестнадцатеричном, строки и т.д.
Вы также можете использовать концепции ООП с Integer. Например, вы можете использовать Integer для обобщений (то есть ).Collection<Integer>
Java использует примитивные типы (также называемые простыми типами), такие как int или double , для хранения основных типов данных, поддерживаемых языком. Примитивные типы , а не объекты, используются для этих количеств ради производительности . Использование объектов для этих значений добавило бы неприемлемые издержки даже для самых простых вычислений. Таким образом, примитивные типы не являются частью иерархии объектов и не наследуют Object .
Несмотря на выигрыш в производительности, предлагаемый примитивными типами, бывают случаи, когда вам необходимо представление объекта. Например, вы не можете передать примитивный тип по ссылке на метод . Кроме того, многие из стандартных структур данных, реализованных в Java, работают с объектами, что означает, что
вы не можете использовать эти (объектно-ориентированные) структуры данных для хранения примитивных типов . Для обработки этих (и других) ситуаций Java предоставляет оболочки типов, которые являются классами, инкапсулирующими примитивный тип в объекте.
Классы Wrapper напрямую связаны с функцией автобоксинга в Java
. Типы обёрток: Double, Float, Long, Integer, Short, Byte, Character и Boolean . Эти классы предлагают широкий спектр методов, которые позволяют вам полностью интегрировать примитивные типы в иерархию объектов Java.
Чтобы оптимизировать время выполнения кода Java, были добавлены intпримитивные типы, в том числе floatи boolт. Д., Но они поставляются вместе с классами-обертками, так что при необходимости вы можете конвертировать и использовать их в качестве стандартного объекта Java вместе со многими утилитами, входящими в их состав. функции (такие как Integer.parseInt("1")).
intявляется примитивным типом данных, в то время как Integerявляется типом ссылки или типа оболочки (класса) в Java.
после java 1.5чего вы можете ввести концепцию автобоксирования и распаковки, вы можете инициализировать оба intили Integerкак это.
int a=9Integer 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.
Integer n = 9;
из-за автобокса (если вы не используете очень старую версию Java)Ответы:
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, а примитивы - нет. Таким образом, он может быть использован в коллекциях со ссылкой на объект или с помощью Generics.
Начиная с Java 5 у нас есть автобокс, и преобразование между примитивом и классом-оберткой выполняется автоматически. Однако будьте осторожны, так как это может привести к незначительным ошибкам и проблемам с производительностью; Быть откровенным о преобразованиях никогда не повредит.
источник
C#
всех типах данных есть «псевдонимы», иint.Parse()
они имеют смысл (хотя на самом деле это не так)C#
совершенно не имеет значения здесь.Integer - это класс, а int - это примитивный тип.
Читайте по этим ссылкам:
источник
Integer - это просто оболочка для примитивного типа int. Он позволяет вам использовать все функции класса Integer, чтобы облегчить вам жизнь.
Если вы новичок в Java, вы должны научиться ценить документацию по Java. Например, все, что вы хотите знать о классе Integer, подробно описано в документации.
Это прямо из документации для класса Integer:
Класс Integer оборачивает значение примитивного типа int в объект. Объект типа Integer содержит одно поле, тип которого int.
источник
Integer
и класс, он может храниться в контейнерах (в отличие от примитивных типов).Переменная int содержит 32-разрядное целое число со знаком. Integer (с заглавной I) содержит ссылку на объект (класса) типа Integer или на ноль.
Java автоматически приводит между ними; от Integer до int всякий раз, когда объект Integer встречается в качестве аргумента оператора int или назначается переменной int, или значение int присваивается переменной Integer. Этот кастинг называется бокс / распаковка.
Если целочисленная переменная, ссылающаяся на null, является явной или неявной, без нее, создается исключение NullPointerException.
(В приведенном выше тексте термин «переменная» означает локальную переменную, поле или параметр)
источник
Integer
ссылается на тип оболочки в Java, тогда какint
является примитивным типом. Все, кроме примитивных типов данных в Java, реализовано так же, как объекты, которые подразумевают, что Java является высококвалифицированным чисто объектно-ориентированным языком программирования. Если вам нужно, все типы примитивов также доступны как типы-оболочки в Java. Вы можете получить некоторое преимущество в производительности с примитивными типами, и, следовательно, типы-обертки должны использоваться только тогда, когда это необходимо.В вашем примере, как показано ниже.
постоянная
9
в настоящее время автоматически в штучной упаковке (auto-boxing
иunboxing
происходит автоматически иjava 5
далее) , чтобыInteger
и , следовательно , вы можете использовать оператор , как это и такжеInteger n = new Integer(9)
. Это на самом деле достигается с помощью заявленияInteger.valueOf(9).intValue();
источник
int является примитивным типом, а не объектом. Это означает, что нет никаких методов, связанных с этим. Integer - это объект с методами (например, parseInt).
С более новой Java есть функциональность для автоматического бокса (и распаковки). Это означает, что компилятор вставит Integer.valueOf (int) или integer.intValue (), где это необходимо. Это означает, что на самом деле можно написать
который интерпретируется как
источник
Integer - это класс-обертка / Object, а int - примитивный тип. Эта разница играет огромную роль, когда вы хотите сохранить значения int в коллекции, потому что они принимают только объекты в качестве значений (до jdk1.4). JDK5 и дальше из-за автобокса это совсем другая история.
источник
Integer.valueOf(i)
илиInteger.intValue()
для вас.Collection<int>
все равно не будет работать. Так что это не совсем другая история - это та же самая история, с небольшим сокращением.В Java int является примитивным типом данных, а Integer является классом Helper, он используется для преобразования одного типа данных в другой.
Например:
Примитивные типы данных хранят самую быструю доступную память, где класс Helper сложен, и хранятся в динамической памяти.
ссылка от "David Gassner" Java Essential Training.
источник
int
примитивный тип, представляющий целое число в то времяInteger
как объект, который оборачиваетint
.Integer
Объект дает вам больше функций, таких как преобразование в шестнадцатеричном, строки и т.д.Вы также можете использовать концепции ООП с
Integer
. Например, вы можете использовать Integer для обобщений (то есть ).Collection
<Integer>
источник
Это взято из Java: полный справочник, девятое издание
источник
Чтобы оптимизировать время выполнения кода Java, были добавлены
int
примитивные типы, в том числеfloat
иbool
т. Д., Но они поставляются вместе с классами-обертками, так что при необходимости вы можете конвертировать и использовать их в качестве стандартного объекта Java вместе со многими утилитами, входящими в их состав. функции (такие какInteger.parseInt("1")
).источник
int
является примитивным типом данных, в то время какInteger
является типом ссылки или типа оболочки (класса) в Java.после
java 1.5
чего вы можете ввести концепцию автобоксирования и распаковки, вы можете инициализировать обаint
илиInteger
как это.Integer
это класс, определенный вjdk
библиотеке, иparseInt()
это статический метод принадлежитInteger
классуИтак,
Integer.parseInt("1");
возможно в Java. ноint
примитивный тип (предположим, как ключевое слово) в Java. Таким образом, вы не можете позвонитьparseInt()
сint
.источник