Любой ли символ в java можно записать как '\u...'?

 
 
 
Сообщения:12
Потому что я прочла, что любой, но у меня получается не со всеми. Например, не получается записать апостроф: char a = '\u0027'. Выводит ошибку Invalid character constant.

hi there
 
 
Сообщения:373
Из книги "Java. Библиотека профессионала" том 1:
Quote:

ВНИМАНИЕ! Управляющие последовательности символов в Юникоде обрабатываются перед синтаксическим анализом кода. Например, управляющая последовательность "\u0022+\u0022" не является символьной строкой, состоящей из знака +, заключаемого в кавычки (U+0022). Вместо этого значение \u0022 преобразуется в знак " перед синтаксическим анализом, в результате чего получается пустая строка ""+"".
Более того, следует избегать употребления префикса \u в комментариях. Так, если ввести в исходном коде программы следующий комментарий:
// \u00A0 это знак новой строки
то возникнет синтаксическая ошибка, поскольку значение \u00A0 заменяется знаком новой строки при компиляции программы. Аналогично следующий комментарий:
// войти в каталог с:\users
приводит к синтаксической ошибке, поскольку за префиксом \u не следуют четыре шестнадцатеричные цифры.

Таким образом char a = '\u0027' преобразуется в char a = ''', поэтому компилятор и ругается на пустой символьный литерал.
Попробуйте записать в шестнадцатеричном формате: char a = 0x0027.
 
 
Сообщения:12
vps:
Из книги "Java. Библиотека профессионала" том 1:
Quote:

ВНИМАНИЕ! Управляющие последовательности символов в Юникоде обрабатываются перед синтаксическим анализом кода. Например, управляющая последовательность "\u0022+\u0022" не является символьной строкой, состоящей из знака +, заключаемого в кавычки (U+0022). Вместо этого значение \u0022 преобразуется в знак " перед синтаксическим анализом, в результате чего получается пустая строка ""+"".
Более того, следует избегать употребления префикса \u в комментариях. Так, если ввести в исходном коде программы следующий комментарий:
// \u00A0 это знак новой строки
то возникнет синтаксическая ошибка, поскольку значение \u00A0 заменяется знаком новой строки при компиляции программы. Аналогично следующий комментарий:
// войти в каталог с:\users
приводит к синтаксической ошибке, поскольку за префиксом \u не следуют четыре шестнадцатеричные цифры.

Таким образом char a = '\u0027' преобразуется в char a = ''', поэтому компилятор и ругается на пустой символьный литерал.
Попробуйте записать в шестнадцатеричном формате: char a = 0x0027.

Блин.. Ничего не поняла :(

hi there
 
 
Сообщения:373
Может это поможет разобраться с вопросом.
 
 
Сообщения:12
vps:
Может это поможет разобраться с вопросом.

Поняла! Спасибо большое!

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