Les octets occupés par char en java : 1. Le caractère dans le code interne en java est codé en UTF16, et un caractère occupe deux octets 2. Le caractère dans le code étranger en java est codé en UTF8 ; , Un caractère occupe [1~6] octets.
Avant de discuter de cette question, nous devons faire la distinction entre Unicode et UTF.
unicode : un numéro de caractères unifié, qui fournit uniquement un mappage entre les caractères et les nombres. Le nombre de symboles est en constante augmentation et a dépassé le million. Détails : [https://zh.wikipedia.org/zh-cn/Unicode]
UTF : format de transformation Unicode. Définit la méthode d'encodage des nombres en Unicode. UTF8 et UTF16 sont deux des méthodes d'implémentation. Parmi eux, utf8 est une représentation de longueur variable, et la longueur peut être de 1 à 6 octets ; utf16 est une représentation de longueur variable, et la longueur peut être de 2 ou 4 octets. Détails : UTF8 [https://zh.wikipedia.org/zh-cn/UTF-8] UTF16 [https://zh.wikipedia.org/zh-cn/UTF-16]
Ensuite, nous devons faire la distinction entre l’encodage interne et l’encodage externe.
Code interne : la méthode d'encodage des caractères et des chaînes en mémoire lorsqu'un certain langage est en cours d'exécution.
Code externe : à l'exception du code interne, tous sont des codes externes.
Il est à noter que la méthode d'encodage dans le fichier de code objet (fichier exécutable ou fichier de classe) généré par la compilation du code source appartient au code étranger.
Jetons d'abord un coup d'œil au code interne
Le code interne de la JVM utilise UTF16. Au début, UTF16 était codé à l'aide d'un codage de 2 octets de longueur fixe. Deux octets peuvent représenter 65 536 symboles (en fait, cela peut en réalité représenter moins que cela), ce qui était suffisant pour représenter tous les caractères Unicode à cette époque. Cependant, avec l'augmentation du nombre de caractères dans Unicode, 2 octets ne peuvent pas représenter tous les caractères. UTF16 utilise 2 octets ou 4 octets pour terminer l'encodage. Pour faire face à cette situation, Java utilise une paire de caractères pour représenter les caractères nécessitant 4 octets, en tenant compte des exigences de compatibilité ascendante. Par conséquent, char en Java occupe deux octets, mais certains caractères nécessitent deux caractères pour les représenter.
Code étranger
Les fichiers de classe Java utilisent UTF8 pour stocker les caractères, c'est-à-dire que les caractères de la classe occupent 1 à 6 octets.
Lors de la sérialisation Java, les caractères sont également codés en UTF8, représentant 1 à 6 caractères.
Résumé :
Le caractère dans le code interne Java (mémoire courante) est codé en UTF16. Un caractère occupe deux octets, mais certains caractères nécessitent d'être représentés par deux caractères. . Ainsi, un caractère occupera 2 ou 4 octets.
Le caractère java en code chinois et étranger est codé en UTF8 et un caractère occupe 1 à 6 octets.
Dans l'encodage UTF16, les caractères anglais occupent deux octets ; la plupart des caractères chinois (en particulier les caractères chinois couramment utilisés) occupent deux octets, et les caractères chinois individuels (les caractères chinois codés en Unicode seront ajoutés ultérieurement). ) , mots généralement rares et rarement utilisés) occupent quatre octets.
Dans l'encodage UTF8, les caractères anglais occupent un octet ; la plupart des caractères chinois occupent trois octets et certains caractères chinois occupent quatre octets.
EOF
Recommandations d'apprentissage gratuites associées : Tutoriel de base Java
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!