Maison >Java >javaDidacticiel >Comment effectuer correctement le boxing et le unboxing des classes wrapper en Java ?
La soi-disant boxe (Boxing) consiste en fait à convertir des types de base en classes d'emballage, par exemple transformer un double en Double. La boxe est divisée en boxe manuelle et boxe automatique (Auto Boxing). Si nous instancions manuellement une classe d'empaquetage, il s'agit de boxe manuelle. Avant le JDK 1.5, le boxing manuel devait être effectué ; après le JDK 1.5, le boxing automatique peut être effectué sans opérations manuelles, ce qui simplifie le développement et est plus pratique.
Le cas suivant est le processus de mise en œuvre de la boxe manuelle et de la boxe automatique. Avant et après JDK 1.5, la boxe peut être divisée en boxe manuelle et boxe automatique, donc tout le monde devrait y prêter attention.
public class BoxTest { public static void main(String[] args) { //JDK 1.5之前的拆装箱过程--手动拆装箱 byte b = 10; //手动装箱 Byte b1 = Byte.valueOf(b); System.out.println("手动装箱后的结果,b1="+b1); //手动装箱的另一种形式 int m = 100; Integer obj = new Integer(m); //手动拆箱的另一种形式 int n = obj.intValue(); System.out.println("n = " + n); //JDK 1.5之后的拆装箱过程--自动拆装箱 int i = 10; //自动装箱 Integer i001 = i; System.out.println("自动装箱后的结果,i001="+i001); } }
Le soi-disant unboxing (Unboxing) consiste en fait à convertir le type d'emballage en un type de base, comme transformer Double en double. De même, le déballage est également divisé en déballage manuel et déballage automatique (Auto Boxing). L'instanciation manuelle de la classe d'emballage est le déballage manuel. Avant JDK 1.5, le déballage doit être effectué manuellement, mais après JDK 1.5, le déballage peut être effectué automatiquement.
Le cas suivant est le processus de mise en œuvre du déballage manuel et du déballage automatique. Avant et après JDK 1.5, le déballage peut être divisé en déballage manuel et déballage automatique, donc tout le monde devrait y prêter attention.
public class BoxTest { public static void main(String[] args) { //JDK 1.5之前的拆装箱过程--手动拆装箱 byte b = 10; //手动装箱 Byte b1 = Byte.valueOf(b); System.out.println("手动装箱后的结果,b1="+b1); //手动拆箱 byte b2 = b1.byteValue(); System.out.println("手动拆箱后的结果="+b2); //JDK 1.5之后的拆装箱过程--自动拆装箱 int i = 10; //自动装箱 Integer i001 = i; System.out.println("自动装箱后的结果,i001="+i001); //自动拆箱 int i002 = i001; System.out.println("自动拆箱后的结果,i002="+i002); } }
Il convient de noter que le boxing et le déballage automatiques ne se produisent que pendant la phase de compilation et ont pour but de réduire l'écriture de code. Du point de vue des performances, le processus de boxing et de unboxing affectera l'efficacité d'exécution du code, car le code de classe compilé fait une distinction stricte entre les types de base et les types de référence, de sorte que le boxing et le unboxing pendant la phase de compilation doivent toujours être effectués. après compilation. Retour à l'original. De plus, lors du déballage automatique, si l'affectation est incorrecte, une NullPointerException peut se produire, comme indiqué ci-dessous :
Integer n = null; //这里就会产生NPE空指针异常 int m = n;
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!