【发布时间】:2011-07-25 16:37:58
【问题描述】:
0 到 255 之间的字符值可以用从 "\000" 到 "\377" 的八进制文字表示。
那么"\400" 不应该是编译时错误吗? Eclipse 并没有抱怨,但是……这是怎么回事?
【问题讨论】:
标签: java string unicode unicode-string string-literals
0 到 255 之间的字符值可以用从 "\000" 到 "\377" 的八进制文字表示。
那么"\400" 不应该是编译时错误吗? Eclipse 并没有抱怨,但是……这是怎么回事?
【问题讨论】:
标签: java string unicode unicode-string string-literals
将其解释为 "\40" + "0"
Java 语言规范描述了这个here。
OctalEscape:
\ OctalDigit
\ OctalDigit OctalDigit
\ ZeroToThree OctalDigit OctalDigit
OctalDigit: one of
0 1 2 3 4 5 6 7
ZeroToThree: one of
0 1 2 3
【讨论】:
它属于
\ OctalDigit OctalDigit
... 后跟“0”。它不属于
\ ZeroToThree OctalDigit OctalDigit
...所以它不是模棱两可或超出范围。有关详细信息,请参阅 Java 语言规范的 section 3.10.6。
请注意,您不能将其用作 character 文字,原因正是如此:
char x = '\377'; // Fine
char y = '\400'; // Error: unclosed character literal
【讨论】:
'abc' 也会这样做。