//System.out.println("hii");'\uxxx'
Оператор println комментируется, но unicode не комментируется. Почему?Почему этот код показывает ошибку, недействительный юникод?
//System.out.println("hii");'\uxxx'
Оператор println комментируется, но unicode не комментируется. Почему?Почему этот код показывает ошибку, недействительный юникод?
Unicode может быть представлен \uCODE
, а не /uCODE
. Если ваш юникод - новая строка, и вы пытаетесь написать что-то после юникода, это может показать вам ошибку времени компиляции. В противном случае встроенные юникоды комментируются в одиночном комментарии. Не нужно специально комментировать unicode.
//Compilation Error
//System.out.println("hii"); \u000d Hello
EDIT
Когда компилятор начинает он заменяет все Юникода символ с его значением включая символов комментария.
Так что в приведенном выше описании во время компиляции это будет.
//System.out.println("hii");
Hello
Вау, я удивляюсь, почему джавак не может прочитать это как простые персонажи. – Codebender
Эй, на самом деле я хочу знать, почему он не комментирует unicode? –
Java позволяет использовать Unicode в исходном коде. В отличие от многих других языков, это позволяет делать это где угодно, в том числе, конечно, комментарии. И это позволяет ему в идентификаторах, а также, так что вы можете написать код Java юридический так:
String हिन्दी = "Hindi";
имя переменной является совершенно законным (хотя кодирование конвенции препятствовать такому использованию).
Что касается javac
, то исходный код является Unicode. Проблема в том, что он может быть представлен различными кодировками, а некоторые редакторы не поддерживают Unicode, и есть места, где использование файла, отличного от ASCII, создаст проблемы.
Так что в коде можно использовать escape-коды Unicode. Это сделает файл полностью включенным в ASCII, несмотря на наличие идентификаторов или комментариев в Unicode. Вы можете заменить любой символ в коде эквивалентным escape-кодом Unicode. Даже «нормальные» символы, такие как ;
. Например, следующая строка:
String s = "123";
Может быть написан как:
String s \u003d "123"\u003b
И он будет составлен правильно и без каких-либо проблем. Фактически вы можете написать всю программу в экранах Unicode, включая новые строки. Компилятору Java просто все равно, если escape-код Unicode находится внутри литералов или самого источника.
Но Результатом этого является то, что компилятор должен интерпретировать Unicode ускользает первый, и только затем разбить источник на маркеры, такие как идентификаторы, операторы и комментарии, и после этого он проверяет синтаксис и т.д.
Это означает, что если у вас есть незаконная escape-последовательность Unicode в вашем источнике, она будет помечена как ошибка , хотя она находится внутри комментария, потому что на данный момент компилятор даже не знает, что конкретная часть кода смотрит на комментарий.
Когда спецификация языка Java была создана, стандарт Unicode был принят, а примитив char был определен как 16-битный тип данных, с символами в шестнадцатеричном диапазоне от от 0x0000 до 0xFFFF.
Также вы должны использовать "\ 0001" вместо "/ 0001".
javac convertts \u
escapes перед тем, как он сделает что-нибудь еще, включая обработку комментариев. Поэтому, когда он видит:
\uxxx
идентифицирует это как недействителен побег Unicode и останавливает компиляцию с ошибкой.
Возможно, вам стоит взглянуть на этот вопрос (http://stackoverflow.com/questions/30727515/why-is-executing-java-code-in-comments-with-certain-unicode-characters- позволил). –