Символ новой строки Unicode (\ u000d) в Java

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

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

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

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

Ответ 1

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

Следовательно, \u000d в комментарии анализируется как новая строка, заканчивается комментарий и начинается инициализатор экземпляра.