Unicode символ новой строки (\u000d) в Java
Заголовок: Почему закомментированный код выводит "Hello" на консоль в 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
в комментарии интерпретируется как символ новой строки, что завершает комментарий и начинает инициализацию экземпляра.
Инициализация ArrayList в одну строчку
Что значит 'synchronized'?
Почему нет ConcurrentHashSet, если есть ConcurrentHashMap?
Как объявить массив в одну строку?
Какие проблемы следует учитывать при переопределении equals и hashCode в Java?