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

时间:2010-10-05 17:36:59

标签: java unicode

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

illegal line end in character literal

3 个答案:

答案 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+001FU+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);
}