Символ перевода строки в Юникоде (\ u000d) в Java - PullRequest
42 голосов
/ 14 ноября 2011

Давайте посмотрим следующий фрагмент кода в Java.

public class Main {
    public static void main(String[] args) {
        // new Character(' \u000d System.out.println("Hello");
    }
}

В приведенном выше коде, хотя единственная строка в методе main() закомментирована, она отображает вывод Hello на консоли, даже если кажется, что эта закомментированная строка содержит некоторые синтаксические ошибки. Если эта строка не закомментирована, она вообще не будет работать, что приведет к ошибке времени компиляции.

Почему здесь выводится "Hello"?

1 Ответ

44 голосов
/ 14 ноября 2011

Java анализирует escape-коды символов в исходном коде, а не только в строках.
Это позволяет использовать идентификаторы Unicode без кодировки Unicode.

Поэтому \u000d в комментарии анализируется какперевод строки, завершение комментария и запуск инициализатора экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...