Why can't I use u000D and u000A as CR and LF in Java?
为什么我不能在Java中使用U000 0D和U000 0A作为CR和LF?编译代码时出错:
1
| illegal line end in character literal |
unicode转义在编译器运行之前经过预处理。因此,如果将\u000A放在这样的字符串文字中:
1
| String someString ="foo\u000Abar"; |
它的编译方式与您所写的完全相同:
坚持
(回车;0x0D)和
(换行;0x0A)
额外好处:你可以一直享受这个乐趣,特别是考虑到大多数语法强光灯的限制。下次有时间,请尝试运行以下代码:
1 2 3 4 5 6 7
| 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)-伟大的实例:
- 很酷的派对游戏。
- 大鸭unexpected我。但为什么冰如\u0008退格键不工作,然后对两个以前删除的代码吗?
- "stacktracer::-)。如果这是一个严重的问题,我想答案会是什么interpret部队的预处理器,两个字符作为一个命令两个擦A之前的字符。日食的控制台忽视它了。是的,就像在一个不u000d。结果我的电脑的运输回归!
- 1这是我的新。可怕的:D
- 这是C的东西,# solved elegantly allowing多享受,只有那些逃亡的字符串,chars和标识符。这是你能得到的方式还是非ASCII类型标识符,如果你不能让他们,但你不会得到一个机会,mangling源代码的方式。我有两个好的预编译的,无论如何。《Java的人显然没有从学习的三重图的C代码,可以有类似的破坏性。
- 乔伊:不会,"似乎是个改良。然而,作为一个结果,他们的选择更多的是confusing标识符。例如,//标识符是一个有效的,当且仅当你使用Unicode的逃亡。它的更容易吗?两个原因。关于如何在Java的预处理工作,但它也更容易吗?太多的两个拍摄自己的脚。
- 马克,这两个标识符的限制仍然是一样的人物,这是essentially全Unicode字母(没有太多的不同,从Java的事实)。《语法场起飞"字符为Unicode字符或一类的学院路、LL、LT LM,笑了笑,或NL"或"unicode转义字符序列的一类representing学院路、LL、LT LM,笑了笑,或NL"。你也可以使用的标识符,碰撞与关键词城市或者采用Unicode转义标识符或prefixing《与@(尽管那真的有两个有用的源代码,通常)。
- 乔伊:"什么是experiencing然后在这里吗?ideone.com / 2tib7b辨别,这是因为ideone单吗?我一场DECLARE"/",然后使用反射访问信息,使用"/"。
- A听起来bug单在离它不adhere的规范。微软自己的# C编译器(4.0.30319.17929 rejects码),与blah.cs(5,19): error CS1056: Unexpected character '\u002F'(几个小时)和blah.cs(5,19): error CS1519: Invalid token '\u002F' in class, struct, or interface member declaration。我想,尽管我没有太多的# T C代码了,有两个tries(AB)使用它。
- 这似乎像是安全obfuscated违约发生的等待……说真的,许多Java项目将如何知道关于这个吗?在地球上和世界卫生组织的决定,这是一个好主意,前两unescape Unicode字符的字符串分隔符的评论和分析。???????
因为它属于Unicode控制字符的范围
它是U+0000–U+001F和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.
它们可以通过使用上述答案中所述的\通过@mark进行转义。
来自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.