为什么我不能在Java中使用\ u000D和\ u000A作为CR和LF?编译代码时出错:
illegal line end in character literal
答案 0 :(得分:110)
在运行编译器之前预先处理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!");
}
}
}
答案 1 :(得分:1)
因为它属于Unicode Control characters
的范围哪个是U+0000–U+001F
和U+007F
。
Unicode控制字符用于控制解释或 显示文字,但这些字符本身没有视觉或 空间表征。
可以使用\
转义它们,如上面的回答@Mark
FROM RFC:
<强> 2.5。字符串强>
字符串的表示是 类似于C中使用的惯例 编程语言家族。一个 字符串以引号开头和结尾 分数。所有Unicode字符都可以 放在引号内 除了必须的字符 逃脱:引号,反转 solidus和控制字符 (U + 0000到U + 001F)。
任何字符可能被转义。
答案 2 :(得分:0)
建议最好不要用 最好不要用 试一下下面的代码,你就明白了 试试下面的代码,你会看到
public static void main(String[] args) {
String a = "Hello";
// \u000d a="world";
System.out.println(a);
// \u000a a="hello world!";
System.out.println(a);
}