"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Combien d'octets une chaîne Java occupe-t-elle et pourquoi la réponse dépend-elle de son encodage ?

Combien d'octets une chaîne Java occupe-t-elle et pourquoi la réponse dépend-elle de son encodage ?

Publié le 2024-11-08
Parcourir:166

How many bytes does a Java string occupy, and why does the answer depend on its encoding?

Calcul du nombre d'octets d'une chaîne en Java

En Java, les chaînes sont composées de caractères dont la représentation en octets peut varier en fonction de l'encodage choisi. Pour déterminer le nombre d'octets dans une chaîne, il faut considérer le codage de caractères utilisé pour sa conversion en octets.

Nombre d'octets dépendant du codage

La clé pour comprendre le nombre d'octets est que différents codages entraînent des tailles d'octets différentes pour la même chaîne. Par exemple, une chaîne codée en UTF-8 peut nécessiter 1 octet par caractère, tandis qu'une chaîne codée en UTF-16 peut nécessiter 2 octets par caractère.

Conversion d'une chaîne en octets

Pour calculer le nombre d'octets, nous pouvons convertir la chaîne en un tableau d'octets à l'aide de getBytes() méthode :

byte[] utf8Bytes = string.getBytes("UTF-8");
byte[] utf16Bytes = string.getBytes("UTF-16");

La longueur du tableau d'octets résultant fournit le nombre d'octets pour cet encodage particulier :

int utf8ByteCount = utf8Bytes.length;
int utf16ByteCount = utf16Bytes.length;

Exemple

Considérez la chaîne "Hello World":

String string = "Hello World";

// Print the number of characters in the string
System.out.println(string.length()); // 11

// Calculate the byte count for different encodings
byte[] utf8Bytes = string.getBytes("UTF-8");
byte[] utf16Bytes = string.getBytes("UTF-16");
byte[] utf32Bytes = string.getBytes("UTF-32");

// Print the byte counts
System.out.println(utf8Bytes.length); // 11
System.out.println(utf16Bytes.length); // 24
System.out.println(utf32Bytes.length); // 44

Considérations

Il est essentiel de spécifier explicitement le codage de caractères souhaité lors de la conversion de chaînes en octets. S'appuyer sur les valeurs par défaut peut conduire à des résultats inattendus, en particulier lorsque vous travaillez avec des langages qui utilisent des caractères non-ASCII.

De plus, notez que certains codages, comme UTF-8, peuvent utiliser un codage de longueur variable pour les caractères. Cela signifie qu'un seul caractère peut être représenté par un nombre variable d'octets, soulignant encore davantage l'importance de la sélection du codage.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3