简体   繁体   中英

Why can't I use \u000D and \u000A as CR and LF in Java?

Why can't I use \ and \ as CR and LF in Java? It's giving an error when I compile the code:

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

Unicode escapes are pre-processed before the compiler is run. Therefore, if you put \ in a String literal like this:

String someString = "foo\u000Abar";

It will be compiled exactly as if you wrote:

String someString = "foo
bar";

Stick to \\r (carriage return; 0x0D ) and \\n (line feed; 0x0A )

Bonus: You can always have fun with this, especially given the limitations on most syntax highlighters. Next time you've got a sec, try running this code:

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

Because it falls within the range of Unicode Control characters

Which is U+0000–U+001F and U+007F .

Unicode control characters are used to control the interpretation or display of text, but these characters themselves have no visual or spatial representation.

They can be escaped by using \\ like described in above answer by @Mark

FROM RFC :

2.5. Strings

The representation of strings is similar to conventions used in the C family of programming languages. A string begins and ends with quotation marks. All Unicode characters may be placed within the quotation marks except for the characters that must be escaped: quotation mark, reverse solidus, and the control characters (U+0000 through U+001F).

Any character may be escaped.

建议最好不要用 It's better not to use it 试一下下面的代码,你就明白了 Try the following code and you'll see

public static void main(String[] args) {
    String a = "Hello";
    // \u000d a="world";
    System.out.println(a);
    // \u000a a="hello world!";
    System.out.println(a);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM