Хороший компьютерный язык высокого уровня должен быть легко читаемым и понятным, обеспечивая при этом надежную среду не только для машины, но и для разработчика. Общие теории не должны изменяться для того, чтобы изобрести новый класс или тип данных. Типы Integer и int в Java имеют разное поведение.

Integer — это класс, а int становится типом данных. Какая разница ?? Значение Integer всегда упаковывается в объект, в то время как int просто сохраняет значение как само значение. Фактически, он сохраняет двоичное значение этого десятичного числа. Проблема поднимется, когда придет Целочисленное сравнение.

Мы все знаем, что 150 == 150, верно?? Но если компьютер скажет, что это неправильно, вы поверите? Да, вы должны…!! Отсюда и возникает заблуждение.

В Яве,

Integer num1 = 150, num2=150; 
Integer num3 = 100, num4=100;

System.out.println(num1==num2); //gives false
System.out.println(num3==num4); //while this gives true !!!

Это оказывает негативное влияние на разработчика (даже если это происходит по определенной причине). 90% разработчиков могут с этим не смириться. Распаковка целочисленной оболочки произойдет, когда мы сравним два объекта Integer с меньшими значениями (скажем, ниже 100). Но каждый раз, когда мы сравниваем большие значения, если они равны (как значение), это дает ложь (это верно; оба являются объектами). Потому что в это время распаковки не произойдет. Если вам нужно развернуть Integer, есть метод для вызова из этого объекта Integer.

int num1_int= num1.intValue();
int num2_int= num2.intValue();

Итак, то же самое можно сделать, используя,

System.out.println(num1_int==num2_int);//gives true   Happy ???  :)

Как это соотносится с С#?

В C# нет класса с именем Integer, но есть int (то же самое, что и Int32). Это структура данных, которая находится в System.Int32. Это позволяет разработчику гибко подстраиваться под программирование без каких-либо спонтанных заблуждений.

Аргумент

Каково использование Integer в качестве ссылочного типа, сохраняющего значение? Не помешает ли это разработчику?

Решение

Преобразование, которое я описал выше (что запутанно, не рекомендуется), или не используйте меньшие числа при использовании Integer в качестве ссылочного типа для хранения значения (чего никогда не происходит).