Maison  >  Article  >  Java  >  Comment Java représente-t-il en interne les chaînes : UTF-16 ou UTF-8 modifié ?

Comment Java représente-t-il en interne les chaînes : UTF-16 ou UTF-8 modifié ?

DDD
DDDoriginal
2024-11-11 01:32:03942parcourir

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

Démêler la représentation des chaînes de Java : UTF-16 ou UTF-8 modifié ?

Dans le domaine de Java, la représentation interne des chaînes a été un sujet de débat. Deux sources apparemment fiables présentent des informations contradictoires :

Une source suggère que Java utilise UTF-16 pour la représentation interne du texte, tandis que l'autre postule une version modifiée d'UTF-8. Laquelle de ces affirmations est vraie ?

La réponse : UTF-16 pour la représentation interne

Java adopte UTF-16 pour sa représentation interne du texte, y compris les chaînes, les chaînes constructeurs et autres structures connexes. Ce système de codage utilise des unités de code Unicode 16 bits pour représenter les caractères compris entre U 0000 et U FFFF ou les unités de code UTF-16.

UTF-8 modifié pour la sérialisation

Bien que Java privilégie UTF-16 en interne, il utilise une variante non standard de UTF-8 pour la sérialisation des cordes. La sérialisation implique la transformation d'objets Java dans un format stockable et transmissible, et dans ce contexte, les chaînes sérialisées sont représentées en utilisant UTF-8 modifié.

Stockage en mémoire : chaînes compressées

Au niveau JVM, Java peut utiliser des chaînes compressées (activées par -XX : UseCompressedStrings), où les chaînes qui ne nécessitent pas Le codage UTF-16 peut être stocké à l'aide du codage ISO-8859-1 8 bits. Cette optimisation réduit l'utilisation de la mémoire pour des types spécifiques de chaînes.

Utilisation des octets pour Char

Une variable char en Java occupe systématiquement 2 octets, quelles que soient les considérations de remplissage au sein d'un objet. .

Points de code et représentation des personnages

Il est important de notez qu'un point de code, représentant des caractères au-delà de la limite 65535, peut être exprimé en utilisant un ou deux caractères (c'est-à-dire 2 ou 4 octets).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn