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