Подтвердить что ты не робот

Разница между String.length() и String.getBytes(). Length

Я начинаю и самообучаюсь в программировании на Java. Итак, я хочу знать о различии между String.length() и String.getBytes().length в Java.

Что больше подходит для проверки длины строки?

4b9b3361

Ответ 1

String.length() - количество кодовых единиц UTF-16, необходимых для представления строки. То есть, это число значений char, которые используются для представления строки (при этом она равна toCharArray().length). Для западных языков это обычно совпадает с количеством символов Юникода (кодовых точек) в строке. Значения будут разными в любое время, когда используются UTF-16 суррогатные пары. Такие пары необходимы только для кодирования символов вне BMP и редко используются в большинстве письменная форма.

String.getBytes().length - количество байтов, необходимых для представления вашей строки в кодировке по умолчанию платформы. Например, если кодировка по умолчанию была UTF-16 (редко), это было бы ровно 2x значение, возвращаемое String.length(). Чаще всего, ваша кодировка платформы будет многобайтовой кодировкой, такой как UTF-8.

Это означает, что связь между этими двумя длинами сложнее. Для строк ASCII два вызова почти всегда дают одинаковый результат (за пределами необычных кодировок по умолчанию, которые не кодируют подмножество ASCII в 1 байт). Вне строк ASCII String.getBytes().length, вероятно, будет длиннее, поскольку он подсчитывает байты, необходимые для представления строки, тогда как length() подсчитывает 2-байтовые кодовые единицы.

Что более подходит?

Обычно вы будете использовать String.length() совместно с другими строковыми методами, которые принимают смещения в строку. Например, чтобы получить последний символ, вы должны использовать str.charAt(str.length()-1). Вы использовали бы только getBytes().length, если по какой-то причине вы имели дело с кодировкой массива байтов, возвращаемой getBytes.

Ответ 2

Метод length() возвращает длину строки в символах.

Символы могут принимать более одного байта. Выражение String.getBytes().getLength() возвращает длину строки в байтах, используя набор символов по умолчанию для платформы.

Ответ 3

Метод string.length() возвращает количество символов в строке. В то время как getBytes(). Length() возвращает количество байтов, используемых для хранения этих символов. Обычно символы хранятся в кодировке UTF-16. Поэтому для хранения одного char требуется 2 байта. Проверьте этот ответ SO.

Я надеюсь, что это поможет:)

Ответ 4

Короче говоря, String.length() возвращает количество символов в строке, а String.getBytes(). length возвращает количество байтов для представления символов в строке с указанной кодировкой.

Во многих случаях String.length() будет иметь такое же значение, как String.getBytes(). length. Но в таких случаях, как кодирование UTF-8 и символ имеет значение более 127, String.length() не будет таким же, как String.getBytes(). Length. Вот пример, в котором объясняется, как символы в строке преобразуются в байты при вызове String.getBytes(). Это должно дать вам представление о различии между строками String.length() и String.getBytes(). Length.