Le contenu de cet article porte sur ce qu'est la classe d'empaquetage en Java ? Une introduction aux scénarios d'application des classes d'empaquetage Java a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Aujourd'hui, je vais parler de l'origine des classes d'empaquetage Java, ainsi que des concepts et principes de la boxe et du déballage automatiques.
La conception Java fournissait à l'origine 8 types de données de base et 8 types de données d'emballage correspondants. Nous savons que Java est un langage de haut niveau pour la programmation orientée objet, les types wrapper sont donc précisément fournis pour résoudre le problème selon lequel les types de données de base ne peuvent pas être fournis par la programmation orientée objet.
Voici les types de données de base et les types d'emballage correspondants.
基本数据类型 | 包装类型 |
---|---|
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
Ce qui suit est le schéma de structure d'héritage du type d'emballage.
À partir du tableau ci-dessus, vous pouvez avoir une compréhension complète des types de base et des types d'emballage.
1. Les génériques de classe de collection ne peuvent être que des classes d'emballage
// 编译报错 List<int> list1 = new ArrayList<>(); // 正常 List<Integer> list2 = new ArrayList<>();
2. ne peut pas être une valeur par défaut ;
private int status;
Les variables membres des types de données de base ont des valeurs par défaut. Par exemple, la valeur par défaut du statut dans le code ci-dessus est 0. Si 0 dans la définition représente. En cas d'échec, il y aura des problèmes. De cette façon, seule la classe wrapper Integer peut être utilisée. Sa valeur par défaut est null, il n'y aura donc aucun effet sur la valeur par défaut.
3. Les paramètres de méthode sont autorisés à définir des valeurs nulles
private static void test1(int status){ System.out.println(status); }
En regardant le code ci-dessus, le paramètre de méthode définit le type de données de base int ; le nombre doit être transmis Ici, null ne peut pas être transmis. Dans de nombreux cas, nous espérons pouvoir transmettre null, il est donc plus approprié d'utiliser une classe d'empaquetage dans ce cas.
Il existe de nombreux autres scénarios d'application, je ne les énumérerai donc pas un par un. Bienvenue pour laisser un message pour discuter d'autres scénarios d'application d'emballage.
Java 5 ajoute un mécanisme automatique de boxing et unboxing, fournissant des opérations de conversion mutuelle entre les types de données de base et les types d'empaquetage.
Autoboxing
Autoboxing convertit automatiquement les types de données de base en types d'emballage. Avant Java 5, il suffisait de convertir les types de données de base en types d'emballage. Pour ce faire, voir. le code ci-dessous.
Integer i1 = new Integer(8); Integer i2 = Integer.valueOf(8); // 自动装箱 Integer i3 = 8;
Les 3 méthodes ci-dessus peuvent être converties, mais avant Java 5, la troisième méthode n'a pas réussi à se compiler, et la troisième méthode est également la fonction de boxe automatique actuelle. De plus, la première méthode de constructeur n’est pas recommandée et a été marquée comme obsolète.
En fait, le principe de la boxe automatique est d'appeler la méthode valueOf de la classe packaging, comme la méthode Integer.valueOf dans la deuxième méthode.
Déballage automatique
Le déballage automatique signifie la conversion automatique du type d'emballage en types de données de base. Contrairement à l'emballage automatique, il est facile de comprendre quand il est installé et déballé. .
// 自动拆箱 int i4 = i3; int i5 = i3.intValue();
En continuant l'exemple ci-dessus, l'attribution de i3 à i4 est la fonction de unboxing automatique. Le principe de la boxe automatique est d'appeler la méthode xxValue de la classe d'empaquetage, comme la méthode intValue d'Integer dans i5.
Le boxing et le unboxing automatiques ne sont pas seulement reflétés dans les exemples ci-dessus, mais peuvent également être automatiquement boxés et déballés lorsque la méthode reçoit des paramètres et que l'objet définit des paramètres.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!