1. Liste des types d'emballages
Vous savez que Java a 8 types primitifs, qui sont des types qui ne sont pas des classes. D'une part, c'est bien - ils sont simples et prennent peu de place. D'un autre côté, parfois, les cours sont exactement ce dont nous avons besoin. Vous découvrirez exactement pourquoi dans la prochaine leçon.
Alors qu'est ce qui peut être fait?
À partir de la cinquième version de Java, chaque type primitif a gagné une classe jumelle. Chacune de ces classes stocke un seul champ avec une valeur d'un type spécifique. Ces classes sont appelées types wrapper , car elles encapsulent des valeurs primitives dans des classes.
Voici une liste de ces types. En connaissez-vous?
Type primitif | Classe wrapper |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Les noms des types primitifs commencent par une lettre minuscule, mais les noms des classes wrapper commencent par une lettre majuscule. Certains noms de classes sont également un peu plus longs : Integer
au lieu de int
et Character
au lieu de char
.
Tous les objets des classes wrapper sont inchangeables ( immutable ).
Le code simplifié pour la Integer
classe ressemble à ceci :
Code | Note |
---|---|
|
Constructeur de variable La méthode renvoie une valeur La méthode statique crée un nouvel Integer objet pour une int variable |
2. Conversion d'un int
en unInteger
Les types wrapper sont considérés comme des homologues de leurs frères et sœurs primitifs : vous pouvez facilement créer un objet wrapper qui correspond à un type primitif.
Utilisons le type int comme exemple pour analyser comment les types primitifs interagissent avec leurs types wrapper correspondants. Le code pour convertir de an int
en an Integer
et vice versa ressemblerait à ceci :
Pour convertir an int
en an Integer
, vous devez écrire ce code :
Integer name = new Integer(value);
Où name
est le nom d'une Integer
variable, et value
est la int
valeur encapsulée.
Exemples:
Code | Note |
---|---|
|
|
|
|
|
Et pour convertir le an Integer
en an int
, vous devez écrire ce code :
int name = variable.intValue();
Où name
est le nom d'une int
variable et variable
est une référence à un Integer
objet.
Exemples:
Code | Note |
---|---|
|
|
|
|
|
|
|
|
3. Boîte automatique et déballage
Mais même des opérations simples avec le Integer
type ne sont pas faciles à écrire.
Comme nous l'avons dit précédemment, le Integer
type est immuable (unchangeable ) . Pour créer un Integer
objet avec une nouvelle int
valeur, vous devez créer explicitement un nouvel Integer
objet. Cela dit, il est facile d'obtenir la valeur d'un int
stocké à l'intérieur d'un Integer
objet - il suffit d'appeler la intValue()
méthode.
Exemple:
Code | Description |
---|---|
|
Envelopper 5 un Integer objet Obtenir la valeur de l' Integer objet Créer un nouvel Integer objet (égal à 10) |
C'est un code plutôt lourd, vous ne pensez pas ?
Les créateurs de Java l'ont pensé, alors ils ont appris au compilateur comment faire ces opérations automatiquement. La conversion automatique de an int
en an Integer
s'appelle autoboxing (mettre automatiquement la valeur dans une case) et l'opération inverse (convertir an Integer
en an int
) s'appelle unboxing .
Votre code | Ce que voit le compilateur |
---|---|
|
|
|
|
|
|
Grâce à l'autoboxing et à l'unboxing, vous pouvez affecter en toute sécurité un int
à une Integer
variable et vice versa. Vous pouvez écrire des expressions de n'importe quelle complexité sans faire de distinction entre les types int
et Integer
.
Exemples:
Code | Ce que le compilateur va générer |
---|---|
|
|
|
|
4. Comparer les variables wrapper
L'autoboxing et l'unboxing sont des processus simples et transparents. Nous utilisons new Integer()
des instructions selon les besoins et nous appelons la intValue()
méthode selon les besoins.
Tout fonctionne bien et facilement pour vous, le programmeur. N'oubliez pas que si vous comparez an Integer
et an Integer
, la comparaison est basée sur une référence et non sur des valeurs.
Code | Sortie console |
---|---|
|
|
|
|
Les variables a
et b
ne stockent pas int
de valeurs. Ils stockent des références à des objets. Cela signifie qu'il est important de se rappeler comment les comparer correctement :
Faux | Droite |
---|---|
|
|
GO TO FULL VERSION