Heim >Java >javaLernprogramm >Warum wirkt sich Javas Integer-Caching auf „=='-Vergleiche aus?
Problem:
Bedenken Sie den folgenden Java-Code:
Integer a = 1000, b = 1000; System.out.println(a == b); // false Integer c = 100, d = 100; System.out.println(c == d); // true
Warum gibt der Vergleich von a und b „falsch“ zurück, während der von c und d „wahr“ zurückgibt, obwohl beide Paare dies getan haben? die gleichen numerischen Werte?
Antwort:
Um Speicher und Leistung zu optimieren, speichert die Java Virtual Machine (JVM) Integer-Instanzen innerhalb eines bestimmten Bereichs zwischen.
Die JVM erkennt, dass in Programmen häufig kleine Ganzzahlwerte (typischerweise von -128 bis 127) verwendet werden. Das Zuweisen eines neuen Integer-Objekts für jeden dieser Werte würde übermäßig viel Speicher verbrauchen. Daher verwaltet die JVM einen Cache mit vorab zugewiesenen Integer-Instanzen innerhalb dieses Bereichs. Wenn Autoboxing auftritt oder wenn Integer-Variablen literale Ganzzahlwerte zugewiesen werden (z. B. Integer c = 100;), ruft die JVM die entsprechende Instanz aus dem Cache ab.
Diese Optimierung reduziert den Speicheraufwand erheblich und verbessert die Cache-Effizienz . Durch das Speichern mehrerer Verweise auf dasselbe Integer-Objekt kann die JVM die Erstellung redundanter Objekte vermeiden und die Speichernutzung optimieren.
Das obige ist der detaillierte Inhalt vonWarum wirkt sich Javas Integer-Caching auf „=='-Vergleiche aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!