Ganzzahl als primitiver Typ

8

Warum gibt es einen primitiven Typ für Ganzzahl (int), obwohl wir ein Objekt für Ganzzahl als Ganzzahl haben? Das Gleiche gilt jedoch nicht für den String-Typ. Es gibt keinen solchen primitiven Typ für String. Always String behandelt Objektreferenz?

    
user241924 20.01.2010, 05:07
quelle

4 Antworten

18

Geschwindigkeit. Es ist viel schneller, wenn Maschinencode zwei int-Befehle mit nativen CPU-Anweisungen hinzufügt, statt zwei Integer-Objekte zu verwenden, die int-Werte daraus zu extrahieren und dann diese hinzuzufügen und ein neues Integer-Ergebnisobjekt zu erzeugen. ( wie JNI Grundelemente ordnet )

Strings sind komplex, haben viele Methoden und haben daher keinen Maschinencode-Kontrapunkt. Sie werden zu einem wahren Objekt befördert. Außerdem teilt sich ein String den Zustand mit anderen Strings, die mit demselben Wert erstellt wurden. Kein primitiver Wert teilt den Zustand mit anderen primitiven Werten wie diesem. ( unveränderlich kann geteilt werden | primitiv keine Freigabe )

    
maxpolk 20.01.2010, 05:10
quelle
1

Dies liegt daran, dass Prozessoren (CPUs) direkte Unterstützung für Ganzzahl-Typen, aber nicht für Zeichenfolgen haben. Aus Performancegründen unterstützt Java einige native Typen, die wahrscheinlich von den Prozessoren unterstützt werden, auf denen die JVM möglicherweise läuft.

    
x4u 20.01.2010 05:12
quelle
0

Ein String-Datentyp ist wesentlich komplexer als ein int - es gibt eine variable Menge an Speicher, um einen String für eine Sache zu halten.

    
Michael Burr 20.01.2010 05:11
quelle
0

Letztendlich werden die Berechnungen auf Maschinensprache durchgeführt. Ich frage mich, was den Unterschied zwischen Primitiven und Objekten in Bezug auf die Leistung ausmacht. Ausgearbeitete Antwort wird geschätzt.

    
krishna krishh 11.05.2015 04:55
quelle

Tags und Links