В чем разница между int и Integer в Java и C #? - PullRequest
244 голосов
/ 03 августа 2008

Я читал Еще Джоэл о программном обеспечении , когда я наткнулся на Джоэл Спольски , говоря что-то о конкретном типе программиста, знающего разницу между int и Integer в Java / C # (объектно-ориентированные языки программирования).

Так в чем же разница?

Ответы [ 25 ]

2 голосов
/ 04 августа 2017

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

1 голос
/ 05 июня 2018

01. Целое число может быть нулевым. Но int не может быть нулевым.

Integer value1 = null; //OK

int value2 = null      //Error

02. Только могут передавать значения типа Wrapper Classes любому классу коллекции.

(Wrapper Classes - Boolean, Символ, Байт, Короткое, Целое, Длинное, Плавающее, Двойное)

List<Integer> element = new ArrayList<>();
int valueInt = 10;
Integer  valueInteger = new Integer(value);
element.add(valueInteger);

Но обычно мы добавляем примитивные значения в класс коллекции? Точка 02 верна?

List<Integer> element = new ArrayList<>();
element.add(5);

Да, 02 правильно, beacouse autoboxing.

Autoboxing - это автоматическое преобразование, которое делает компилятор Java между типом примитива и соответствующим им классом-оберткой.

Затем 5 преобразовать в целочисленное значение путем автобокса.

1 голос
/ 06 марта 2017

int предопределено в библиотечной функции c #, но в Java мы можем создать объект Integer

0 голосов
/ 16 февраля 2018

(версия Java) Проще говоря, int является примитивным, а Integer является объектом-оберткой для int.

Один из примеров, где использовать Integer против int. Если вы хотите сравнить и снова ввести переменную int, то null выдаст ошибку.

int a;
//assuming a value you are getting from data base which is null
if(a ==null) // this is wrong - cannot compare primitive to null
{
do something...}

Instead you will use,
Integer a;
//assuming a value you are getting from data base which is null
if(a ==null) // this is correct/legal
{ do something...}
0 голосов
/ 22 сентября 2016

В Java, насколько мне известно, если вы учитесь, то, когда вы пишете Int; тогда в java generic будет скомпилирован код типа Integer a = new Integer(). Таким образом, согласно обобщению Integer не используется, но используется int. так что есть такая разница там.

...