Maison  >  Article  >  Java  >  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 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 04:42:03504parcourir

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 de l'encodage

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 la méthode getBytes() :

<code class="java">byte[] utf8Bytes = string.getBytes("UTF-8");
byte[] utf16Bytes = string.getBytes("UTF-16");</code>

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

<code class="java">int utf8ByteCount = utf8Bytes.length;
int utf16ByteCount = utf16Bytes.length;</code>

Exemple

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

<code class="java">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</code>

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 encodages, comme UTF-8, peuvent utiliser un encodage 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.

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