Autoboxing ist die automatische Konvertierung des Java-Compilers zwischen den primitiven Typen und ihren entsprechenden Wrapper-Klassenobjekten, d. h. die Konvertierung von int in Integer, double in Double usw. Unboxing ist die automatische Konvertierung von Wrapper-Klassenobjekten in ihre entsprechenden Primitive, d. h. Ganzzahl zu int. Die Funktion wurde in Version 1.5 von Java eingeführt.
Der Compiler verwendet die Methode valueOf(), um Grundelemente intern in entsprechende Wrapper-Objekte zu konvertieren (d. h. Autoboxing), und im umgekehrten Fall verwendet er intValue(), doubleValue() usw., wie Paradigmen für das Unboxing.
Starten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Die Zuordnung von primitiven Typen und Wrapper-Klassen in Java lautet wie folgt:
Primitive type | Wrapper class |
boolean | Boolean |
byte | Byte |
char | Character |
float | Float |
int | Integer |
long | Long |
short | Short |
double | Double |
Nehmen wir eine ArrayList of Integers und nutzen das Unboxing-Konzept.
import java.util.ArrayList; public class MyClass { public static void main(String args[]) <em>{</em> ArrayList<Integer> intlist = new ArrayList<Integer>(); //wrapper Integer objects being added here intlist.add(1); interest.add(2); //auto-unboxing is happening here int x = intlist.get(0); System.out.println(x); } }
Daher sehen wir im obigen Beispiel, dass x primitiv zu sein scheint, während wir x einen Wert hinzufügen. Dadurch erfolgt das Auspacken hier automatisch, während die Zuweisung erledigt ist.
public class MyClass { public static void main(String args[]) { Integer sum =0; for(int i=0;i<10;i++) { sum = sum + i; } System.out.println(sum); } }
Bedenken Sie den unten platzierten Ausschnitt. Was wird das Ergebnis sein?
public class Main { public static void main(String[] args) { Integer m = 34123; Integer x = 34123; System.out.println(x==m); } }
public class Main { public static void main(String[] args) { Integer m = 100; Integer x = 100; System.out.println(x==m); } }
Dies wird als „wahrer“ Wert ausgewertet, da 100 im Literalpool vorhanden ist.
public class Main { public static void main(String[] args) { Overload obj = new Overload(); int i =5; obj.printval(5); Integer m = i; obj.printval(m); } } class Overload { public void printval(int i) { System.out.println("printing the unboxed value "+ i); } public void printval(Integer i) { System.out.println("printing the autoboxed value "+ i); } }
Ausgabe:
Hinweis: Sie können das obige Programm in jeder der IDEs ausführen, um die obige Ausgabe zu erhalten.Wir haben den Anwendungsfall von Autoboxing und Unboxing gesehen und gesehen, wie implizit dieses Konzept ist, zusammen mit seinen Vor- und Nachteilen. Es muss beim Codieren mit Vorsicht verwendet werden; Andernfalls kann es zu unnötigem Rechenaufwand für die Konvertierung kommen. Folglich müssen Konvertierungen in Grundelementen durchgeführt werden, um einen übermäßigen Aufwand für die Garbage Collection und die Erstellung temporärer Objekte zu vermeiden. Wir haben auch den Anwendungsfall von Autoboxing mit dem Überlastungskonzept in Java gesehen. Darüber hinaus können Sie einige weitere Einschränkungen überprüfen.
Das obige ist der detaillierte Inhalt vonAutoboxing und Unboxing in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!