为什么我不能在Java中使用\ u000D和\ u000A作为CR和LF?
为什么我不能在Java中使用 u000D和 u000A作为CR和LF? 编译代码时发生错误:
illegal line end in character literal
编译器运行之前预处理Unicode转义字符。 因此,如果您将u000A
放入像这样的字符串文字中:
String someString = "foou000Abar";
它将完全按照如下方式编译:
String someString = "foo
bar";
坚持r
(回车; 0x0D
)和n
(换行; 0x0A
)
奖金:您可以随时享受这一乐趣,特别是考虑到大多数语法荧光笔的限制。 下一次你有一秒钟,尝试运行这个代码:
public class FalseIsTrue {
public static void main(String[] args) {
if ( false == true ) { //these characters are magic: u000au007du007b
System.out.println("false is true!");
}
}
}
因为它属于Unicode控制字符的范围
这是U+0000–U+001F
和U+007F
。
Unicode控制字符用于控制文本的解释或显示,但这些字符本身不具有可视或空间表示。
像@Mark上面的回答中所描述的那样,他们可以通过使用来逃脱
FROM RFC:
2.5。 字符串
字符串的表示类似于C系列编程语言中使用的约定。 一个字符串以引号开头和结尾。 除了必须转义的字符:引号,反转斜体和控制字符 (U + 0000到U + 001F)之外,所有Unicode字符都可以放在引号内。
任何角色都可能被逃脱。
链接地址: http://www.djcxy.com/p/20563.html上一篇: Why can't I use \u000D and \u000A as CR and LF in Java?