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

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

illegal line end in character literal

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

String someString = "foou000Abar";

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: u000au007du007b
            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.

链接地址: http://www.djcxy.com/p/20564.html

上一篇: 为什么Java允许在源代码中转义unicode字符?

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