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!