3 Stimmen

Wie können Primitive in Java die Instanziierung von "new Object" überspringen?

Zum Beispiel, wenn Sie einen Integer haben:

int i = 9;

Wie kann das funktionieren? Ich meine, die vollständige Syntax lautet:

int i = new Integer(9);

Wie überspringt es den ganzen new Integer() Teil und funktioniert trotzdem?

Danke.

9voto

Oliver Charlesworth Punkte 259497

Es überspringt es nicht, weil Primitive keine Objekte sind.

Ihr zweite Codezeile beinhaltet Auto-Unboxing, was eine spätere Ergänzung zur Java-Sprache war.

7voto

SLaks Punkte 832502

new Integer() ist kein Primitiv; es ist ein verpacktes Primitiv.
Tatsächliche Primitivtypen (int, usw.) sind keine Objekte und können nicht instanziiert werden.

Beachten Sie, dass Sie auch Integer x = 9 schreiben können und der Java-Compiler automatisch new Integer() einfügt.
Dies wird Auto-Boxing genannt.

3voto

Francisco Spaeth Punkte 22663

Vielleicht möchten Sie sich AutoBoxing hier ansehen

Primitive : Referenz Zuordnung
byte : Byte
short : Short
int : Integer
long : Long
float : Float
double : Double
bool : Boolean
char : Character

Autoboxing / unboxing ist die automatisierte Konvertierung unter der Oberfläche zwischen primitiven Typen und ihren äquivalenten Objekttypen. Zum Beispiel, die Konvertierung zwischen einem int primitiven Typ und einem Integer Objekt oder zwischen einem boolean primitiven Typ und einem Boolean Objekt. Dies wurde in Java 5 eingeführt.

2voto

Pshemo Punkte 118094

Primitive und Objekt sind zwei verschiedene Dinge. Ohne die Primitiven könnten Sie kein Integer-Objekt wie new Integer(9) erstellen (Integer verwendet das Primitiv 9 im Konstruktor).

2voto

Marko Topolnik Punkte 188258

Deine Frage hätte viel mehr Sinn ergeben, wenn sie gefragt hätte, warum

Integer i = 9;

funktioniert ohne new und die Antwort wäre "aufgrund der automatischen Verpackung von Primitiven, die in Java 5 eingeführt wurde". Vielleicht hast du das ja wirklich wissen wollen :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X