Der Inhalt dieses Artikels befasst sich mit der Frage, was die Verpackungsklasse in Java ist. Eine Einführung in die Anwendungsszenarien von Java-Paketklassen hat einen gewissen Referenzwert. Ich hoffe, dass sie für Sie hilfreich ist.
Heute werde ich über den Ursprung der Java-Paketklassen sowie die Konzepte und Prinzipien des automatischen Ein- und Auspackens sprechen.
Java-Design stellte ursprünglich 8 grundlegende Datentypen und 8 entsprechende Verpackungsdatentypen bereit. Wir wissen, dass Java eine Hochsprache für die objektorientierte Programmierung ist. Daher werden Wrapper-Typen genau bereitgestellt, um das Problem zu lösen, dass grundlegende Datentypen durch objektorientierte Programmierung nicht bereitgestellt werden können.
Im Folgenden sind die grundlegenden Datentypen und die entsprechenden Verpackungstypen aufgeführt.
基本数据类型 | 包装类型 |
---|---|
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
Das Folgende ist das Vererbungsstrukturdiagramm des Verpackungstyps.
Aus der obigen Tabelle können Sie sich ein umfassendes Verständnis der Grundtypen und Verpackungsarten verschaffen.
1. Sammelklassengenerika können nur Verpackungsklassen sein
// 编译报错 List<int> list1 = new ArrayList<>(); // 正常 List<Integer> list2 = new ArrayList<>();
2 value;
private int status;
Die Mitgliedsvariablen der Basisdatentypen haben Standardwerte. Der Standardwert des Status im obigen Code ist beispielsweise 0. Wenn 0 in der Definition einen Fehler darstellt, treten Probleme auf , daher können Sie nur verwenden. Die Wrapper-Klasse Integer hat den Standardwert null, sodass es keinen Standardwerteffekt gibt.
3. Methodenparameter dürfen Nullwerte definieren
private static void test1(int status){ System.out.println(status); }
Wenn man sich den obigen Code ansieht, definiert der Methodenparameter den Basisdatentyp int, also muss eine Zahl sein Null kann nicht übergeben werden. In vielen Fällen hoffen wir, null übergeben zu können, daher ist es in diesem Fall angemessener, eine Verpackungsklasse zu verwenden.
Es gibt noch viele weitere Anwendungsszenarien, daher werde ich sie nicht einzeln auflisten. Gerne können Sie eine Nachricht hinterlassen, um weitere Anwendungsszenarien der Verpackung zu besprechen.
Java 5 fügt einen automatischen Boxing- und Unboxing-Mechanismus hinzu, der gegenseitige Konvertierungsvorgänge zwischen Basisdatentypen und Verpackungstypen ermöglicht.
Autoboxing
Autoboxing konvertiert Basisdatentypen automatisch in Verpackungstypen. Vor Java 5 mussten Sie dazu nur Basisdatentypen in Verpackungstypen konvertieren den Code unten.
Integer i1 = new Integer(8); Integer i2 = Integer.valueOf(8); // 自动装箱 Integer i3 = 8;
Alle oben genannten drei Methoden können konvertiert werden, aber die dritte Methode konnte vor Java 5 nicht kompiliert werden, und die dritte Methode ist auch die aktuelle automatische Boxfunktion. Darüber hinaus wird die erste Konstruktormethode nicht empfohlen und wurde als veraltet markiert.
Tatsächlich besteht das Prinzip des automatischen Boxens darin, die valueOf-Methode der Verpackungsklasse aufzurufen, beispielsweise die Integer.valueOf-Methode in der zweiten Methode.
Automatisches Unboxing
Automatisches Unboxing bedeutet, dass der Verpackungstyp automatisch in Basisdatentypen konvertiert wird. Im Gegensatz zum automatischen Paketieren ist es beim Installieren und Entpacken leicht zu verstehen . .
// 自动拆箱 int i4 = i3; int i5 = i3.intValue();
Um das obige Beispiel fortzusetzen, ist die Zuweisung von i3 zu i4 die automatische Unboxing-Funktion. Das Prinzip des automatischen Boxens besteht darin, die xxValue-Methode der Verpackungsklasse aufzurufen, beispielsweise die intValue-Methode von Integer in i5.
Automatisches Ein- und Auspacken spiegelt sich nicht nur in den obigen Beispielen wider, sondern kann auch automatisch ein- und ausgepackt werden, wenn die Methode Parameter empfängt und das Objekt Parameter festlegt.
Das obige ist der detaillierte Inhalt vonWas sind Wrapper-Klassen in Java? Einführung in Anwendungsszenarien von Java-Paketklassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!