Heim  >  Artikel  >  Java  >  Wie stellt Java Zeichenfolgen intern dar: UTF-16 oder modifiziertes UTF-8?

Wie stellt Java Zeichenfolgen intern dar: UTF-16 oder modifiziertes UTF-8?

DDD
DDDOriginal
2024-11-11 01:32:03942Durchsuche

How Does Java Internally Represent Strings: UTF-16 or Modified UTF-8?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn