"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Quantos bytes uma string Java ocupa e por que a resposta depende de sua codificação?

Quantos bytes uma string Java ocupa e por que a resposta depende de sua codificação?

Publicado em 2024-11-08
Navegar:855

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

Calculando a contagem de bytes de uma string em Java

Em Java, strings são compostas de caracteres, que podem variar em sua representação de bytes com base em a codificação escolhida. Para determinar o número de bytes em uma string, deve-se considerar a codificação de caracteres usada para sua conversão em bytes.

Contagem de bytes dependente de codificação

A chave para a compreensão contagem de bytes é que codificações diferentes resultam em tamanhos de bytes diferentes para a mesma string. Por exemplo, uma string codificada em UTF-8 pode exigir 1 byte por caractere, enquanto uma codificada em UTF-16 pode exigir 2 bytes por caracter.

Convertendo uma string em bytes

Para calcular a contagem de bytes, podemos converter a string em uma matriz de bytes usando o método getBytes():

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

O comprimento da matriz de bytes resultante fornece a contagem de bytes para essa codificação específica:

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

Exemplo

Considere a string "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

Considerações

É essencial especificar explicitamente a codificação de caracteres desejada ao converter strings em bytes. Depender de padrões pode levar a resultados inesperados, especialmente ao trabalhar com idiomas que usam caracteres não ASCII.

Além disso, observe que certas codificações, como UTF-8, podem usar codificação de comprimento variável para caracteres. Isso significa que um único caractere pode ser representado por um número variável de bytes, destacando ainda mais a importância da seleção da codificação.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3