В Java символ по сути является беззнаковым коротким.Чтобы выполнить итерацию по строке, в которой символы Юникода находятся за пределами диапазона, поддерживаемого char (первые 65536), следует использовать следующий шаблон, в котором каждая кодовая точка хранится как int.
for (int i = 0; i < str.length();) {
int ch = str.codePointAt(i);
// do stuff with ch...
i += Character.charCount(ch);
}
Java быларазработан с первоклассной поддержкой первых 65536 символов, что в то время было улучшением по сравнению с C / C ++, который имел первоклассную поддержку только первых 128 или 256 символов.К сожалению, это означает, что приведенный выше шаблон необходим в Java для поддержки символов вне диапазона, которые становятся все более распространенными.