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?
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 )
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.
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.
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.
Tags und Links java