Хороший компьютерный язык высокого уровня должен быть легко читаемым и понятным, обеспечивая при этом надежную среду не только для машины, но и для разработчика. Общие теории не должны изменяться для того, чтобы изобрести новый класс или тип данных. Типы 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 в качестве ссылочного типа для хранения значения (чего никогда не происходит).