Par exemple, pourquoi pouvez-vous faire:
int n = 9;
Mais non:
Integer n = 9;
Et vous pouvez faire:
Integer.parseInt("1");
Mais non:
int.parseInt("1");
int
est un type primitif. Les variables de type int
stockent la valeur binaire réelle pour l'entier que vous voulez représenter. int.parseInt("1")
n'a pas de sens car int
est pas une classe et n'a donc aucune méthode.
Integer
est une classe non différente des autres dans le langage Java. Variables de type Integer
store références à Integer
objets, comme avec 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 spécifique, Integer
est une classe avec un seul champ de type int
. Cette classe est utilisée lorsque vous avez besoin que int
soit traité comme tout autre objet, tel que dans les types génériques ou dans des situations où vous avez besoin d'une nullabilité.
Notez que chaque type de primitive dans Java a un équivalent wrapper class:
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 n'en possèdent pas. Donc, il peut être utilisé dans des collections avec référence d'objet ou avec des génériques.
Depuis Java 5, nous avons une liste de sélection automatique et la conversion entre la classe primitive et la classe wrapper est effectuée automatiquement. Attention cependant, cela peut introduire des bugs subtils et des problèmes de performances; être explicite sur les conversions ne fait jamais de mal.
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 rendre la vie un peu plus facile.
Si vous débutez dans Java, vous devriez apprendre à apprécier la documentation Java. Par exemple, tout ce que vous voulez savoir sur le Integer Class est documenté en détail.
C'est tout droit sorti de la documentation pour la classe Integer:
La classe Integer encapsule une valeur du type primitif int dans un objet. Un objet de type Integer contient un seul champ de type entier
Une variable int contient une valeur entière signée sur 32 bits. Un entier (avec le capital I) contient une référence à un objet de type (classe) Integer, ou à null.
Java lance automatiquement entre les deux; de Integer à int lorsque l'objet Integer apparaît sous la forme d'un argument pour 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 Integer référençant null est non emballée, explicitement ou implicitement, une exception NullPointerException est levée.
(Dans le texte ci-dessus, le terme "variable" signifie variable locale, champ ou paramètre)
Integer
fait référence au type de wrapper dans Java alors que int
est un type primitif. Tout sauf les types de données primitifs dans Java est implémenté de la même manière que les objets qui impliquent que Java est un langage de programmation purement qualifié, orienté objet et hautement qualifié. Si vous avez besoin, tous les types de primitives sont également disponibles en tant que types de wrapper en Java. Les types primitifs peuvent présenter des avantages en termes de performances. Par conséquent, les types wrapper ne doivent être utilisés que lorsque cela est nécessaire.
Dans votre exemple ci-dessous.
Integer n = 9;
la constante 9
est en cours mise en boîte automatique (auto-boxing
et unboxing
apparaît automatiquement à partir de Java 5
et) à Integer
et vous peut utiliser la déclaration comme ça et aussi Integer n = new Integer(9)
. Ceci est effectivement réalisé via la déclaration Integer.valueOf(9).intValue();
int est un type primitif et non un objet. Cela signifie qu’aucune méthode n’y est associée. Entier est un objet avec des méthodes (telles que parseInt).
Avec les nouveaux Java, il existe des fonctionnalités de boxing automatique (et de déballage). Cela signifie que le compilateur insérera Integer.valueOf (int) ou integer.intValue () si nécessaire. Cela signifie qu'il est effectivement possible d'écrire
Integer n = 9;
qui est interprété comme
Integer n = Integer.valueOf(9);
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 les objets en tant que valeurs (jusqu'à jdk1.4). JDK5 et suite à cause de l'autoboxing c'est une toute autre histoire.
Dans Java, _int est un type de données primitif, tandis que Integer est une classe d'assistance, 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 sont la mémoire disponible la plus rapide où la classe Helper est complexe et stockée dans la mémoire de tas.
référence de "David Gassner" Java Essential Training.
Ceci est tiré de Java: La Référence Complète, Neuvième Edition
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 langage. Les types primitifs, plutôt que des objets, sont utilisés pour ces quantités à des fins pour des raisons de performances. L'utilisation d'objets pour ces valeurs ajouterait un surcharge inacceptable au plus simple des calculs. Ainsi, les types primitifs ne font pas partie de la hiérarchie des objets, et ils n'héritent pas d'Object.
Malgré les avantages de performances offerts par les types primitifs, il est parfois nécessaire d'avoir une représentation d'objet. Par exemple, vous ne pouvez pas transmettre un type primitif par référence à une méthode. De plus, de nombreuses structures de données standard implémentées par Java opèrent sur des objets, ce qui signifie que vous ne pouvez pas utiliser ces structures de données (spécifiques à un objet) pour stocker des types primitifs. Pour gérer ces situations (et d'autres), Java fournit des wrappers de types, qui sont des classes qui encapsulent un type primitif dans un objet.
Les classes wrapper ont un rapport direct avec la fonctionnalité autoboxing de Java. Les types de caractères sont Double, Float, Long, Integer, Short, Byte, Character et Boolean. Ces classes offrent un large éventail de méthodes vous permettant d’intégrer pleinement les types primitifs dans la hiérarchie des objets de Java.
int
est un type primitif qui représente un entier. alors que Integer
est un objet qui enveloppe 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 OOP avec Integer
. Par exemple, vous pouvez utiliser Integer pour les génériques (par exemple, Collection
<Integer>).
Pour optimiser l'exécution du code Java, int
type (s) primitif (s) a été ajouté, y compris float
, bool
etc. ainsi que là classes wrapper afin que, si nécessaire, vous puissiez les convertir et les utiliser comme objet Java standard, ainsi que de nombreux utilitaires fournis comme fonctions membres (tels que Integer.parseInt("1")
).
int
est un type de données primitif alors que Integer
est un type Référence ou Wrapper (Class) en Java.
après Java 1.5
qui introduit le concept de sélection automatique et nboxing vous pouvez initialiser à la fois int
ou Integer
comme ceci.
int a= 9
Integer a = 9 // both valid After Java 1.5.
pourquoi
Integer.parseInt("1");
mais pasint.parseInt("1");
??
Integer
est une classe définie dans la bibliothèque jdk
et parseInt()
est une méthode statique appartenant à la classe Integer
.
Donc, Integer.parseInt("1");
est possible en Java. mais int
est un type primitif (par exemple un mot clé) en Java. Donc, vous ne pouvez pas appeler parseInt()
avec int
.