Heim > Java > javaLernprogramm > Hauptteil

Autoboxing und Unboxing in Java

PHPz
Freigeben: 2024-08-30 16:06:21
Original
720 Leute haben es durchsucht

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.

Wie funktionieren Autoboxing und Unboxing in Java?

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

Beispiele

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);
}
}
Nach dem Login kopieren

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);
}
}
Nach dem Login kopieren
  • Oben haben wir in diesem Zusammenhang ein zweites Beispiel gezeigt, in dem ein typisches Szenario dargestellt wurde. Wenn Sie mit der Objekterstellung in Java vertraut sind, können Sie sehen, dass „Integer sum =0“ ein Objekt deklariert, und wenn wir innerhalb der Schleife Berechnungen durchführen, können wir sehen, dass der primitive Wert „i“ zum hinzugefügt wird Wrapper „sum.“
  • Daher kann man feststellen, dass zunächst die Konvertierung vom Wrapper zum Primitiv erfolgt, da der „+“-Operator nur auf Primitive funktioniert; Daher erfolgt zuerst das Auspacken des Objekts. Dann wird die Berechnung durchgeführt, und danach erfolgt erneut das automatische Boxen von Objekten. Anschließend wird der Wert der Variablen „sum“ zugewiesen.
  • Dies stellt einen unnötigen Mehraufwand für die JVM dar, da viele Zwischen-Integer-Objekte erstellt und dann zerstört werden (um später durch Müll gesammelt zu werden), was zu einer Verlangsamung führt. Daher ist mit solchen Logiken Vorsicht geboten.
  • Mal sehen, wie sich die Bedingungen von der allgemeinen Wahrnehmung unterscheiden. Um Autoboxing und Unboxing zu verstehen, verwenden wir etwas Codierung.

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);
}
}
Nach dem Login kopieren
  • Wenn Sie „wahr“ sagen, dann sind Sie „falsch“, weil die Ausgabe auch „falsch“ ist. Da wir den Ganzzahlbereich von -128 bis 127 vergleichen können, müssen Werte, die außerhalb dieses Bereichs liegen, entpackt werden.
  • Als Ergebnis müssen wir intValue() der oben genannten Ganzzahlen vergleichen. Im Moment erledigt der Compiler dies mithilfe der Eigenschaft valueOf().
  • Wenn dies in den oben genannten Bereich fällt, wird der obige Code wahrscheinlich „wahr“ ergeben, da er zum Vergleich zunächst auf den Integer-Literal-Pool verweist.
public class Main
{
public static void main(String[] args) {
Integer m = 100;
Integer x = 100;
System.out.println(x==m);
}
}
Nach dem Login kopieren

Dies wird als „wahrer“ Wert ausgewertet, da 100 im Literalpool vorhanden ist.

Autoboxing und Unboxing in Java mit Methodenüberladung

  • Bevor wir Autoboxing und Unboxing mit Methodenüberladung kennzeichnen, gehen wir davon aus, dass der Leser das Konzept der Methodenüberladung versteht. Wir werden nur einige Einblicke geben. Weitere Informationen finden Sie in der entsprechenden Dokumentation von Oracle.
  • Methodenüberladung ist der Prozess, bei dem mehrere Varianten einer beliebigen Berechnungsmethode dargestellt werden, indem derselbe Methodenname mit einer unterschiedlichen Anzahl von Eingabeargumenten, unterschiedlichen Datentypen von Variablen mit denselben Namen usw. verwendet wird.
  • Nehmen wir ein Beispiel, um es besser zu verstehen. Das Ausgabebild wird unten angezeigt.
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);
}
}
Nach dem Login kopieren

Ausgabe:

Autoboxing und Unboxing in Java

Hinweis: Sie können das obige Programm in jeder der IDEs ausführen, um die obige Ausgabe zu erhalten.
  • Infolgedessen zeigt das obige Verhalten eindeutig, dass die Autoboxing-Technik zum Überladen von Konzepten nützlich ist und beim Codieren mit Vorsicht verwendet werden sollte.

Vorteile von Autoboxing und Unboxing in Java

  • Der Compiler führt automatisch die entsprechende Konvertierung durch.
  • Der Entwickler schreibt weniger Code und erstellt dadurch saubereren Code.
  • Keine manuelle Typumwandlung von Ausdrücken erforderlich.

 Fazit

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!

Verwandte Etiketten:
Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage