Любой ли Юникод-символ в java можно вывести или записать в память?

 
 
 
Сообщения:19
Потому что для хранения char выделяется 2 байта,а как быть с символами Юникода,код которых занимает больше? Как,например,получить последний символ Юникода? Спасибо.

hi there
 
 
Сообщения:9895
В таком случае в строке будет хранится 2 char'a на символ. String#length() возвращает размер char[] и в случае когда там всего 1 символ но он 4 байта - length() вернет 2:
        assertEquals(2, "\uD867\uDE3D".length());
        assertEquals(1, "\uD867\uDE3D".codePointCount(0, 2));
 
 
Сообщения: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
 
 
Сообщения:9895
FFFF - максимальное число, a всегда будет меньше/равен FFFF. Поэтому a++ в какой-то момент делает overflow уходя в "отрицательные числа" и продолжает работу потому как эти значения все равно меньше чем FFFF.
 
 
Сообщения:19
Староверъ:
FFFF - максимальное число, a всегда будет меньше/равен FFFF. Поэтому a++ в какой-то момент делает overflow уходя в "отрицательные числа" и продолжает работу потому как эти значения все равно меньше чем FFFF.

Уже догадалась,спасибо)

hi there
 
 
Сообщения:19
Староверъ:
FFFF - максимальное число, a всегда будет меньше/равен FFFF. Поэтому a++ в какой-то момент делает overflow уходя в "отрицательные числа" и продолжает работу потому как эти значения все равно меньше чем FFFF.

А какова логика представления символов двумя и более байтами? И где можно про это почитать? Никак не могу понять.

hi there
 
 
Сообщения:96
Unicode, UTF-16, java.lang.Character
Рекомендую начать с http://www.skipy.ru/technics/encodings.html
 
 
Сообщения:19
Flashrunner:
Unicode, UTF-16, java.lang.Character
Рекомендую начать с http://www.skipy.ru/technics/encodings.html

Спасибо,почитаю на досуге

hi there
 
Модераторы:frymock
Сейчас эту тему просматривают:Нет