Quelle est la différence entre Integer et int en Java?


Par exemple pourquoi pouvez-vous faire:

int n = 9;

Mais pas:

Integer n = 9;

Et vous pouvez faire:

Integer.parseInt("1");

Mais pas:

int.parseInt("1");
Author: pnuts, 2011-12-29

12 answers

int est un type primitif. Les variables de type int stockent la valeur binaire réelle de l'entier que vous souhaitez représenter. int.parseInt("1") n'a pas de sens car intest pas une classe et n'a donc aucune méthode.

Integer est une classe, pas différente de toute autre dans le langage Java. Les variables de type Integer stockentles références aux objets Integer, comme pour tout autre type de référence (objet). Integer.parseInt("1") est un appel à la méthode statique parseInt de la classe Integer (notez que cette méthode renvoie en fait un int et non un Integer).

Pour être plus précis, Integer est une classe avec un seul champ de type int. Cette classe est utilisée lorsque vous avez besoin d'un int pour être traité comme n'importe quel autre objet, comme dans les types génériques ou les situations où vous avez besoin de nullabilité.

Notez que chaque type primitif en Java a une classe équivalente wrapper :

  • byte a Byte
  • short a Short
  • int a Integer
  • long a Long
  • boolean a Boolean
  • char a Character
  • float a Float
  • double a Double

Les classes Wrapper héritent de la classe Object, et les primitives ne le font pas. Il peut donc être utilisé dans des collections avec une référence d'objet ou avec des génériques.

Depuis java 5, nous avons autoboxing, et la conversion entre la classe primitive et wrapper se fait automatiquement. Méfiez-vous, cependant, car cela peut introduire des bugs subtils et les problèmes de performance; être explicite sur les conversions ne fait jamais de mal.

 255
Author: Darkhogg, 2015-12-04 13:13:10

Integer est une classe et int est un type primitif.

Lire sur ces liens:

 32
Author: Matjaz Muhic, 2015-08-31 10:58:03

Un entier est à peu près juste un wrapper pour le type primitif int. Il vous permet d'utiliser toutes les fonctions de la classe Integer pour vous faciliter la vie.

Si vous êtes nouveau sur Java, quelque chose que vous devriez apprendre à apprécier est la documentation Java. Par exemple, tout ce que vous voulez savoir sur la classe entière est documenté en détail.

Ceci est tout droit sorti de la documentation pour la classe Integer:

La classe Integer encapsule une valeur de le type primitif int dans un objet. Un objet de type Integer contient un seul champ dont le type est int.

 6
Author: Nadir Muzaffar, 2011-12-28 20:14:13

Integer fait référence au type wrapper en Java alors que int est un type primitif. Tout, sauf les types de données primitifs en Java, est implémenté comme des objets, ce qui implique que Java est un langage de programmation orienté objet pur hautement qualifié. Si vous en avez besoin, tous les types de primitives sont également disponibles en tant que types wrapper en Java. Vous pouvez avoir un avantage de performance avec les types primitifs, et donc les types wrapper ne doivent être utilisés que lorsque cela est nécessaire.

Dans votre exemple comme dessous.

Integer n = 9;

La constante 9 est mise en boîte automatique (auto-boxing et unboxing se produit automatiquement à partir de java 5) à Integer et donc vous pouvez utiliser l'instruction comme ça et aussi Integer n = new Integer(9). Ceci est effectivement réalisé grâce à la déclaration Integer.valueOf(9).intValue();

 5
Author: Lion, 2017-06-20 07:23:01

Une variable int contient une valeur entière signée de 32 bits. Un entier (avec majuscule I) contient une référence à un objet de type (classe) Integer, ou à null.

Java passe automatiquement entre les deux; de Integer à int chaque fois que l'objet Integer se produit en tant qu'argument d'un opérateur int ou est affecté à une variable int, ou qu'une valeur int est affectée à une variable Integer. Ce casting s'appelle boxing / unboxing.

Si une variable entière référençant null est unboxed, explicitement ou implicitement, une NullPointerException est levée.

(Dans le texte ci-dessus, le terme "variable" signifie variable locale, champ ou paramètre)

 4
Author: Bartłomiej Semańczyk, 2015-11-26 11:23:52

Int est un type primitif et non un objet. Cela signifie qu'il n'existe pas de méthodes associées. Entier est un objet avec des méthodes (telles que parseInt).

Avec java plus récent, il existe des fonctionnalités pour la boxe automatique (et le déballage). Cela signifie que le compilateur insérera un entier.valueOf (int) ou entier.intValue () si nécessaire. Cela signifie qu'il est réellement possible d'écrire

Integer n = 9;

Qui est interprété comme

Integer n = Integer.valueOf(9);
 3
Author: Roger Lindsjö, 2011-12-28 20:11:01

Integer est une classe/objet wrapper et int est un type primitif. Cette différence joue un rôle énorme lorsque vous souhaitez stocker des valeurs int dans une collection, car elles n'acceptent que des objets en tant que valeurs (jusqu'à jdk1.4). JDK5 en avant en raison de l'autoboxing, c'est une histoire complètement différente.

 3
Author: kosa, 2011-12-28 20:16:52

int est un type primitif qui représente un entier. alors que Integer est un Objet qui encapsule int. L'objet Integer vous donne plus de fonctionnalités, telles que la conversion en hexadécimal, chaîne, etc.

Vous pouvez également utiliser les concepts de POO avec Integer. Par exemple, vous pouvez utiliser Integer pour les génériques (c'est-à-dire Collection<Integer>).

 2
Author: M S, 2016-07-06 05:04:26

Pour optimiser le code Java runtime, int type primitif(s) a été ajoutée, y compris float, bool etc. mais ils viennent avec làwrapper classes de sorte que si nécessaire, vous pouvez les convertir et les utiliser comme objet Java standard avec de nombreux utilitaires qui viennent comme leurs fonctions membres (telles que Integer.parseInt("1")).

 1
Author: anand, 2015-12-04 12:30:53

En Java, int est un type de données primitif tandis que Integer est une classe d'aide, il est utilisé pour convertir un type de données en un autre.

Par exemple:

         double doubleValue = 156.5d;
         Double doubleObject  = new Double(doubleValue);
         Byte myByteValue = doubleObject.byteValue ();
         String myStringValue = doubleObject.toString();

Les types de données primitifs stockent la mémoire disponible la plus rapide où la classe d'assistance est complexe et stockent dans la mémoire de tas.

Référence de "David Gassner" Java Formation essentielle.

 1
Author: Aqeel Haider, 2016-03-25 14:26:04

int est un type de données primitif tandis que Integer est un Type de référence ou d'enveloppe (Classe) en Java.

Après java 1.5, qui introduisent le concept de l'autoboxing et unboxing, vous pouvez initialiser int ou Integer comme ceci.

int a= 9
Integer a = 9 // both valid After Java 1.5.

Pourquoi Integer.parseInt("1");, mais pas int.parseInt("1"); ??

Integer est une Classe définie dans jdk bibliothèque et parseInt() est une méthode statique appartient à Integer Classe

Donc, Integer.parseInt("1"); est possible en java. mais int est de type primitif (supposons comme un mot clé) en java. Donc, vous ne pouvez pas appeler parseInt() avec int.

 1
Author: Vikrant Kashyap, 2016-07-06 06:23:42

Ceci est tiré de Java: La référence complète, Neuvième édition

Java utilise des types primitifs (également appelés types simples), tels que int ou double, pour contenir les types de données de base pris en charge par le langue. Les types primitifs, plutôt que les objets, sont utilisés pour ces quantités pour le pour des raisons de performance . Utilisation d'objets pour ces valeurs ajouterait un frais généraux inacceptables même au plus simple des calcul. Ainsi, les types primitifs ne font pas partie de l'objet hiérarchie, et ils n'héritent pas d'Objet.

Malgré la performance avantage offert par les types primitifs, il y a des moments où vous besoin d'une représentation d'objet. Par exemple, vous ne pouvez pas passer une primitive tapez par référence à une méthode . En outre, de nombreuses données standard les structures implémentées par Java fonctionnent sur des objets, ce qui signifie que vous ne pouvez pas utiliser ces données (spécifiques à un objet) structures pour stocker les types primitifs . De gérer ces situations (et d'autres), Java fournit des wrappers de type, qui sont des classes qui encapsulent un type primitif dans un objet.

Les classes Wrapper se rapportent directement aux autoboxing{[7 de Java]} caractéristique. Les wrappers de type sont Double, Float, Long, Integer, Short, Octet, Caractère et Booléen . Ces classes offrent un large éventail de les méthodes qui vous permettent d'intégrer pleinement les types primitifs dans Java est un objet hiérarchie.

 1
Author: Teoman shipahi, 2017-11-02 02:57:20