Наприклад, чому ви можете зробити:
int n = 9;
Але ні:
Integer n = 9;
А ви можете:
Integer.parseInt("1");
Але ні:
int.parseInt("1");
Integer n = 9;завдяки автобоксу (якщо ви не використовуєте дуже стару версію Java)
Наприклад, чому ви можете зробити:
int n = 9;
Але ні:
Integer n = 9;
А ви можете:
Integer.parseInt("1");
Але ні:
int.parseInt("1");
Integer n = 9;завдяки автобоксу (якщо ви не використовуєте дуже стару версію Java)
Відповіді:
intє примітивним типом. Змінні типу intзберігають фактичне двійкове значення для цілого числа, яке ви хочете представити. int.parseInt("1")не має сенсу, оскільки intце не клас і тому не має ніяких методів.
Integerце клас, що не відрізняється від будь-якого іншого мовою Java. Змінні типу Integerзберігають посилання на Integerоб'єкти, як і будь-який інший тип посилання (об'єкта). Integer.parseInt("1")- це виклик статичного методу parseIntз класу Integer(зауважте, що цей метод фактично повертає an, intа не an Integer).
Якщо бути більш конкретним, Integerце клас з одним полем типу int. Цей клас використовується там, де до вас потрібно intставитися як до будь-якого іншого об'єкта, наприклад, у загальних типах чи ситуаціях, коли вам потрібна зведеність.
Зауважте, що кожен примітивний тип Java має еквівалентний клас обгортки :
byte має Byteshort має Shortint має Integerlong має Longboolean має Booleanchar має Characterfloat має Floatdouble має DoubleКласи Wrapper успадковують від класу Object, а примітивні - ні. Таким чином, його можна використовувати в колекціях з посиланням на об’єкти або з Generics.
З java 5 у нас є автобоксинг, і перетворення між примітивним і обгортковим класом відбувається автоматично. Однак остерігайтеся, оскільки це може спричинити непомітні помилки та продуктивність; чітке розуміння конверсій ніколи не зашкодить.
C#всіх типах даних є "псевдоніми" і int.Parse()це має сенс (навіть якщо це насправді не так)
C#тут абсолютно не має значення.
Integer - це клас, а int - примітивний тип.
Читайте далі за цими посиланнями:
Integer - це майже просто обгортка для примітиву примітивного типу. Це дозволяє використовувати всі функції класу Integer, щоб полегшити вам життя.
Якщо ви новачок у Java, вам слід навчитися цінувати документацію на Java. Наприклад, все, що ви хочете знати про клас Integer , задокументовано докладно.
Це прямо з документації для класу Integer:
Клас Integer обгортає в об'єкті значення int примітивного типу. Об'єкт типу Integer містить одне поле, тип якого є int.
Integerце клас, він може зберігатися в контейнерах (на відміну від примітивних типів).
Змінна int містить ціле ціле значення, підписане 32 бітами. Цілий (з великим капіталом I) містить посилання на об'єкт (класу) типу Integer або на нуль.
Java автоматично переходить між ними; від Integer до int кожного разу, коли об'єкт Integer виникає як аргумент оператору int або присвоюється змінній int або значенню int присвоюється змінна Integer. Цей кастинг називається бокс / розпакування.
Якщо змінна 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 n = 9;
що трактується як
Integer n = Integer.valueOf(9);
Integer - це клас обгортки / Object and int - примітивний тип. Ця різниця відіграє величезну роль, коли потрібно зберігати значення int у колекції, оскільки вони приймають як об'єкти лише значення (до jdk1.4). JDK5 далі, оскільки автобокс - це зовсім інша історія.
Integer.valueOf(i)або Integer.intValue()вам. Collection<int>все одно не вийде. Тож це не зовсім інша історія - це та сама історія, лише з невеликим скороченням.
У Java int - це примітивний тип даних, тоді як Integer - це клас Helper, він використовується для перетворення одного типу даних в інший.
Наприклад:
double doubleValue = 156.5d;
Double doubleObject = new Double(doubleValue);
Byte myByteValue = doubleObject.byteValue ();
String myStringValue = doubleObject.toString();
Примітивні типи даних зберігають найшвидшу пам’ять, де клас Helper складний, і зберігають у купі пам'яті.
посилання від "Девід Гасснер" Java Essential Training.
int- це примітивний тип, який представляє ціле число. тоді Integerяк об'єкт, який обгортає int. IntegerОб'єкт дає вам більше функцій, таких як перетворення в шістнадцятковому, рядки і т.д.
Ви також можете використовувати концепції OOP за допомогою Integer. Наприклад, ви можете використовувати Integer для дженериків (тобто ).Collection<Integer>
Це взято з Java: Повна довідка, Дев'яте видання
Для використання основних типів даних, підтримуваних мовою, Java використовує примітивні типи (їх також називають простими типами), наприклад, int або double . Для цих кількостей заради продуктивності використовуються примітивні типи , а не об'єкти . Використання об'єктів для цих значень додало б неприйнятні накладні витрати навіть на найпростіші обчислення. Таким чином, примітивні типи не є частиною ієрархії об'єктів , і вони не успадковують Об'єкт .
Незважаючи на перевагу від продуктивності, яку пропонують примітивні типи, є випадки, коли вам знадобиться представлення об'єкта. Наприклад, ви не можете передати примітивний тип за посиланням на метод . Крім того, багато стандартних структур даних, реалізованих Java, працюють на об'єктах, це означає, що ви не можете використовувати ці (специфічні для об'єкта) структури даних для зберігання примітивних типів . Для вирішення цих (та інших) ситуацій Java надає обгортки типу, які є класами, які інкапсулюють примітивний тип всередині об'єкта.
Класи обгортки безпосередньо пов'язані з функцією автобоксингу 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= 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.