«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Сколько байт занимает строка Java и почему ответ зависит от ее кодировки?

Сколько байт занимает строка Java и почему ответ зависит от ее кодировки?

Опубликовано 8 ноября 2024 г.
Просматривать:353

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

Вычисление количества байтов строки в Java

В Java строки состоят из символов, байтовое представление которых может различаться в зависимости от выбранная кодировка. Чтобы определить количество байтов в строке, необходимо учитывать кодировку символов, используемую для ее преобразования в байты.

Количество байт, зависящее от кодировки

Ключ к пониманию Количество байтов заключается в том, что разные кодировки приводят к разным размерам байтов для одной и той же строки. Например, для строки, закодированной в UTF-8, может потребоваться 1 байт на символ, а для строки, закодированной в UTF-16, может потребоваться 2 байта на символ.

Преобразование строки в байты

Чтобы вычислить количество байтов, мы можем преобразовать строку в массив байтов, используя метод getBytes():

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

Длина результирующего массива байтов представляет собой количество байтов для этой конкретной кодировки:

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

Пример

Рассмотрим строку «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

Соображения

При преобразовании строк в байты важно явно указать желаемую кодировку символов. Использование значений по умолчанию может привести к неожиданным результатам, особенно при работе с языками, в которых используются символы, отличные от ASCII.

Кроме того, обратите внимание, что некоторые кодировки, такие как UTF-8, могут использовать кодировку переменной длины для символов. Это означает, что один символ может быть представлен различным количеством байтов, что еще раз подчеркивает важность выбора кодировки.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3