为什么我不能在 Java 中使用 \u000D 和 \u000A 作为 CR 和 LF?

2022-08-31 22:44:15

为什么我不能在 Java 中使用 \u000D 和 \u000A 作为 CR 和 LF?当我编译代码时,它给出了一个错误:

String x = "\u000A hello";//Error - Illegal escape character in string literal.

答案 1

Unicode 转义在运行编译器之前进行预处理。因此,如果您像这样输入字符串文本:\u000A

String someString = "foo\u000Abar";

它将完全按照您编写的内容进行编译:

String someString = "foo
bar";

坚持 (回车; ) 和 (换行符;\r0x0D\n0x0A)

奖金:您始终可以享受其中的乐趣,特别是考虑到大多数语法突出显示器的限制。下次有一秒钟的时间,请尝试运行以下代码:

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!");
        }
    }
}

答案 2

因为它属于 Unicode 控件字符的范围

哪个是 和 。U+0000–U+001FU+007F

Unicode 控制字符用于控制文本的解释或显示,但这些字符本身没有视觉或空间表示。

它们可以通过使用上面答案中描述的那样通过@Mark\

RFC

2.5. 字符串

字符串的表示形式类似于 C 系列编程语言中使用的约定。字符串以引号开头和结尾。除必须转义的字符外,所有 Unicode 字符都可以放在引号内:引号、反向 solidus 和控制字符(U+0000 到 U+001F)。

任何字符都可以转义。


推荐