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 des noms de classe sont également un peu plus longs : Integerinstead of intи Characterinstead of char.
Tous les objets des classes wrapper sont inchangeables ( immutable ).
Le code simplifié pour la Integerclasse ressemble à ceci :
| Code | Note |
|---|---|
|
Constructeur de variable La méthode renvoie une valeur La méthode statique crée un nouvel Integerobjet pour une intvariable |
2. Conversion d'un inten 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 inten an Integeret vice versa ressemblerait à ceci :
Pour convertir an inten an Integer, vous devez écrire ce code :
Integer name = new Integer(value);
Où nameest le nom d'une Integervariable, et valueest la intvaleur encapsulée.
Exemples:
| Code | Note |
|---|---|
|
|
|
|
|
Et pour convertir le an Integeren an int, vous devez écrire ce code :
int name = variable.intValue();
Où nameest le nom d'une intvariable et variableest une référence à un Integerobjet.
Exemples:
| Code | Note |
|---|---|
|
|
|
|
|
|
|
|
3. Boîte automatique et déballage
Mais même des opérations simples avec le Integertype ne sont pas faciles à écrire.
Comme nous l'avons dit précédemment, le Integertype est immuable (unchangeable ) . Pour créer un Integerobjet avec une nouvelle intvaleur, vous devez créer explicitement un nouvel Integerobjet. Cela dit, il est facile d'obtenir la valeur d'un intstocké à l'intérieur d'un Integerobjet - il suffit d'appeler la intValue()méthode.
Exemple:
| Code | Description |
|---|---|
|
Envelopper 5un Integerobjet Obtenir la valeur de l' Integerobjet Créer un nouvel Integerobjet (é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 inten an Integers'appelle autoboxing (mettre automatiquement la valeur dans une case) et l'opération inverse (convertir an Integeren 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 Integervariable et vice versa. Vous pouvez écrire des expressions de n'importe quelle complexité sans faire de distinction entre les types intet 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 Integeret an Integer, la comparaison est basée sur une référence et non sur des valeurs.
| Code | Sortie console |
|---|---|
|
|
|
|
Les variables aet bne stockent pas intde 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