Entschlüsselung der String-Darstellung von Java: UTF-16 oder modifiziertes UTF-8?
Im Bereich Java hat sich die interne Darstellung von Strings geändert Gegenstand von Debatten gewesen. Zwei scheinbar zuverlässige Quellen liefern widersprüchliche Informationen:
Eine Quelle schlägt vor, dass Java UTF-16 für die interne Textdarstellung verwendet, während die andere eine modifizierte Version von UTF-8 postuliert. Welche dieser Behauptungen trifft zu?
Die Antwort: UTF-16 für die interne Darstellung
Java übernimmt UTF-16 für die interne Darstellung von Text, einschließlich Zeichenfolgen und Zeichenfolgen Bauherren und andere verwandte Strukturen. Dieses Kodierungssystem verwendet 16-Bit-Unicode-Codeeinheiten, um Zeichen im Bereich von U 0000 bis U FFFF oder die UTF-16-Codeeinheiten darzustellen.
Modifiziertes UTF-8 für die Serialisierung
Während Java intern UTF-16 bevorzugt, verwendet es eine nicht standardmäßige Variante von UTF-8 für die Serialisierung von Zeichenfolgen. Bei der Serialisierung geht es darum, Java-Objekte in ein speicherbares und übertragbares Format umzuwandeln. In diesem Zusammenhang werden serialisierte Zeichenfolgen mit modifiziertem UTF-8 dargestellt.
In-Memory-Speicherung: Komprimierte Zeichenfolgen
Auf der JVM-Ebene verwendet Java möglicherweise komprimierte Zeichenfolgen (aktiviert durch -XX: UseCompressedStrings), wobei Zeichenfolgen kein UTF-16 erfordern Die Kodierung kann mit der 8-Bit-Kodierung ISO-8859-1 gespeichert werden. Diese Optimierung reduziert die Speichernutzung für bestimmte Arten von Zeichenfolgen.
Byte-Nutzung für Char
Eine char-Variable in Java belegt durchweg 2 Bytes, unabhängig von Überlegungen zum Auffüllen innerhalb eines Objekts .
Codepunkte und Zeichen Darstellung
Es ist wichtig zu beachten, dass ein Codepunkt, der Zeichen über der 65535-Grenze hinaus darstellt, entweder durch ein oder zwei Zeichen (d. h. 2 oder 4 Bytes) ausgedrückt werden kann.
Das obige ist der detaillierte Inhalt vonWie stellt Java Zeichenfolgen intern dar: UTF-16 oder modifiziertes UTF-8?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!