Почему я не могу использовать \u000D и\u000A как CR и LF в Java?
Почему я не могу использовать \u000D и\u000A как CR и LF в Java? Это дает ошибку при компиляции кода:
illegal line end in character literal
Ответ 1
Экземпляры Unicode предварительно обрабатываются перед запуском компилятора. Поэтому, если вы помещаете \u000A в строковый литерал следующим образом:
String someString = "foo\u000Abar";
Он будет скомпилирован точно так, как если бы вы написали:
String someString = "foo
bar";
Придерживайтесь \r (возврат каретки, 0x0D) и \n (строка, 0x0A)
Бонус: Вы всегда можете получать удовольствие от этого, особенно учитывая ограничения для большинства синтаксических маркеров. В следующий раз, когда у вас есть секунда, попробуйте запустить этот код:
public class FalseIsTrue {
public static void main(String[] args) {
if ( false == true ) { //these characters are magic: \u000a\u007d\u007b
System.out.println("false is true!");
}
}
}
Управляющие символы Юникода используются для управления интерпретацией или отображение текста, но сами эти символы не имеют визуального или пространственное представление.
Они могут быть экранированы с помощью \, как описано в приведенном выше ответе @Mark
Представление строк является аналогичные соглашениям, используемым в C семейство языков программирования. строка начинается и заканчивается цитатой Метки. Все символы Юникода могут быть помещены в кавычки за исключением символов, которые должны быть escaped: кавычка, обратная solidus и управляющие символы(U + 0000 через U + 001F).