Warum verwenden Programmierer immer noch primitive Typen in Java?
Trotz der Einführung von Boxing und Unboxing in Java 5 nutzen viele Entwickler weiterhin primitive Typen primitive Typen wie int über ihre Objektgegenstücke wie java.lang.Integer. Diese Praxis wirft die Frage auf, warum dies geschieht, angesichts der zusätzlichen Bequemlichkeit, die Objekttypen bieten.
Wie in Joshua Blochs „Effective Java“ (Punkt 5: „Vermeiden Sie die Erstellung unnötiger Objekte“) beschrieben, ist die Verwendung von Grundelementen kann zu erheblichen Leistungsvorteilen führen. In seinem Codebeispiel dauert das Summieren von Long-Werten mithilfe eines Long-Objekts 43 Sekunden, während die Verwendung von Grundelementen den Vorgang auf 6,8 Sekunden beschleunigt.
Ein weiterer Faktor, der zur Verwendung von Grundelementen beiträgt, ist das Fehlen einer nativen Wertegleichheit in Objekttypen. Um die Gleichheit zu bestimmen, muss die ausführliche Methode equal() verwendet werden, im Gegensatz zum effizienten ==-Operator, der für Grundelemente verfügbar ist.
Beachten Sie den folgenden Codeausschnitt:
class Biziclop { public static void main(String[] args) { System.out.println(new Integer(5) == new Integer(5)); // false System.out.println(new Integer(500) == new Integer(500)); // false System.out.println(Integer.valueOf(5) == Integer.valueOf(5)); // true System.out.println(Integer.valueOf(500) == Integer.valueOf(500)); // false } }
Die Ausgabe zeigt die Inkonsistenz in der Wertgleichheit zwischen new Integer() und Integer.valueOf(). Während die Java Language Specification (JLS) einen Cache mit mindestens 256 ganzzahligen Fliegengewichten ([-128; 127]) erfordert, können JVM-Implementierer diesen Bereich erweitern. Dies bedeutet, dass bestimmte Werte auf einigen Systemen zwischengespeichert werden können, auf anderen jedoch nicht, was zu unerwartetem Verhalten führt.
Das obige ist der detaillierte Inhalt vonWarum bevorzugen Java-Programmierer trotz der Existenz von Wrapper-Klassen primitive Typen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!