Как Java выполнить лексический перевод? - PullRequest
0 голосов
/ 21 апреля 2020

В Jave Spe c я читал, что

Перевод экранирования Unicode (§3.3) в необработанном потоке символов Unicode в соответствующий символ Unicode. Экранирование Unicode в форме \ uxxxx, где xxxx - это шестнадцатеричное значение, представляет кодовую единицу UTF-16, кодировка которой - xxxx. Этот шаг перевода позволяет любой программе быть выраженной с использованием только символов ASCII . здесь

Это означает, что лексический перевод применяется только для символа ASCII? Потому что, когда я пытался написать код с символом кириллицы c, иврита или кандзи, не было ошибки времени компиляции, даже если эти символы не являются ASCII?

Я не понимаю, почему? Может ли кто-нибудь помочь мне понять

1 Ответ

3 голосов
/ 21 апреля 2020

Цитата ничего не говорит о том, что произойдет, если вы напишите программу, содержащую кириллицу / иврит. Фактически, в разделе перед тем, который вы цитировали, написано:

3.1 Unicode

Программы написаны с использованием набора символов Unicode.

Обратите внимание, что «разрешает» здесь означает, что этот шаг перевода добавляет новую возможность к Java. Когда вам разрешено что-то делать, вы можете, но не обязаны делать это.

Цитата просто говорит, что лексический переводчик превратит что-либо в форме \uxxxx в соответствующий символ Unicode U + xxxx.

Естественным следствием этого является то, что вы можете написать программу, содержащую любую кодовую точку Unicode (т.е. «любую программу»), используя только клавиатуру ASCII. Как? Всякий раз, когда вам нужно написать какой-нибудь не-ASCII символ, просто напишите его escape-код Unicode.

В качестве конкретного примера:

Это допустимые операторы Java:

int Д = 0;
System.out.println("Д");

Но допустим, что мой текстовый редактор может обрабатывать только текст ASCII или что у меня только американская клавиатура, поэтому я не могу набрать «Д». Язык spe c говорит, что я все еще могу написать это в ASCII, например:

int \u0414 = 0;
System.out.println("\u0414");

Это будет делать то же самое.

...