2016-07-05 2 views
18

Wie sind Strings in Java 9 unter der Haube implementiert? Wird jedes Zeichen als ein oder zwei Bytes gespeichert?Was ist die neue String-Implementierung von Java 9?

+7

Da Java 9 noch nicht veröffentlicht wurde, ist dieses Verhalten offiziell abgeschlossen? –

+2

@DanielPryden - Gültiger Punkt. Spät im Entwicklungszyklus für Java 9 ist es jedoch * unwahrscheinlich *, dass sie diese Änderung umkehren werden. –

+0

@DanielPryden (Java 9 Entwickler hier) Ich stimme mit Stephen C. Die kompakte Saiten arbeiten ist integriert, und es wurde gut getestet und Benchmarked. Es kommt nicht raus. –

Antwort

22

Da die meisten Verwendungen von Strings Latin-1 sind und nur ein Byte benötigen, wird Java-9s String aktualisiert, um als Byte-Array mit einem Codierungs-Flag-Feld unter der Haube implementiert zu werden, um festzustellen, ob es sich um ein Byte-Array handelt. Wenn die Zeichen nicht Latin-1 sind und mehr als ein Byte benötigen, werden sie als UTF-16-Zeichenfeld (2 Bytes pro Zeichen) und das Flag gespeichert. Siehe JEP 254.

Verwandte Themen