Вы уверены, что вместо этого не видите эту ошибку?
ошибка: недопустимый конец строки в символьном литерале
Escape-последовательности, такие как \u000a
, обрабатываются очень в начале процесса компиляции. \u000a
заменяется фактическим символом перевода строки (кодовая точка 10).
Это как если бы вы написали это:
chr = '
';
поэтому, когда я пытаюсь скомпилировать ваш код с использованием JDK 11.0.8, я получаю ошибку «недопустимый конец строки».
Это раннее преобразование описано в Java Спецификации языка :
Так как escape-символы Unicode обрабатываются очень рано, неправильно записывать '\u000a'
для символьного литерала, значение которого - перевод строки (LF); escape-код Unicode \u000a
преобразуется в фактический перевод строки на этапе перевода 1 (§3.3), а перевод строки становится LineTerminator на этапе 2 (§3.4), и поэтому символьный литерал недействителен на этапе 3. Вместо этого следует используйте escape-последовательность '\n'
(§3.10.6). Точно так же неправильно писать '\u000d'
для символьного литерала, значением которого является возврат каретки (CR). Вместо этого используйте '\r'
.