为什么我不能在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+001FU+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?

下一篇: Code inside comment executed after Unicode sequence