Maison >Java >javaDidacticiel >Que sont les classes wrapper en Java ? Introduction aux scénarios d'application des classes d'empaquetage Java

Que sont les classes wrapper en Java ? Introduction aux scénarios d'application des classes d'empaquetage Java

不言
不言original
2018-09-14 16:32:228445parcourir

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.

Que sont les types d'emballages ?

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.

Que sont les classes wrapper en Java ? Introduction aux scénarios d'application des classes d'empaquetage Java

À partir du tableau ci-dessus, vous pouvez avoir une compréhension complète des types de base et des types d'emballage.

Scénarios d'application de classe 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.

Autoboxing et unboxing

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn