29 ноя 2019 10:47 | |
Сообщения:19 | Потому что для хранения char выделяется 2 байта,а как быть с символами Юникода,код которых занимает больше? Как,например,получить последний символ Юникода? Спасибо. hi there |
29 ноя 2019 11:24 | |
Сообщения:9895 | В таком случае в строке будет хранится 2 char'a на символ. String#length() возвращает размер char[] и в случае когда там всего 1 символ но он 4 байта - length() вернет 2: assertEquals(2, "\uD867\uDE3D".length()); assertEquals(1, "\uD867\uDE3D".codePointCount(0, 2)); Courses: Java Beginner, Java Professional | Downsides of anemic model |
29 ноя 2019 12:35 | |
Сообщения:19 | Староверъ: В таком случае в строке будет хранится 2 char'a на символ. String#length() возвращает размер char[] и в случае когда там всего 1 символ но он 4 байта - length() вернет 2: assertEquals(2, "\uD867\uDE3D".length()); assertEquals(1, "\uD867\uDE3D".codePointCount(0, 2)); Ясно. Спасибо большое! А Вы не знаете,почему когда я пытаюсь вывести cимволы с \u0100 по \uFFFF,в определённый момент символы начинают повторяться и цикл никак не остановится? for ( char a = '\u0100'; a <= '\uFFFF'; a ++) { System.out.printf("%s %s\n",a,Integer.toBinaryString(a)); } hi there |
29 ноя 2019 13:02 | |
Сообщения:9895 | FFFF - максимальное число, a всегда будет меньше/равен FFFF. Поэтому a++ в какой-то момент делает overflow уходя в "отрицательные числа" и продолжает работу потому как эти значения все равно меньше чем FFFF. Courses: Java Beginner, Java Professional | Downsides of anemic model |
29 ноя 2019 13:17 | |
Сообщения:19 | Староверъ: FFFF - максимальное число, a всегда будет меньше/равен FFFF. Поэтому a++ в какой-то момент делает overflow уходя в "отрицательные числа" и продолжает работу потому как эти значения все равно меньше чем FFFF. Уже догадалась,спасибо) hi there |
30 ноя 2019 16:04 | |
Сообщения:19 | Староверъ: FFFF - максимальное число, a всегда будет меньше/равен FFFF. Поэтому a++ в какой-то момент делает overflow уходя в "отрицательные числа" и продолжает работу потому как эти значения все равно меньше чем FFFF. А какова логика представления символов двумя и более байтами? И где можно про это почитать? Никак не могу понять. hi there |
30 ноя 2019 18:26 | |
Сообщения:96 | Unicode, UTF-16, java.lang.Character Рекомендую начать с http://www.skipy.ru/technics/encodings.html |
30 ноя 2019 20:51 | |
Сообщения:19 | Flashrunner: Unicode, UTF-16, java.lang.Character Рекомендую начать с http://www.skipy.ru/technics/encodings.html Спасибо,почитаю на досуге hi there |