一尘不染

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

java

为什么在Java中不能将\ u000D和\ u000A用作CR和LF?编译代码时出现错误:

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

阅读 451

收藏
2020-09-08

共1个答案

一尘不染

在运行编译器之前,会对Unicode转义进行预处理。因此,如果您\u000A输入这样的String文字:

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