3

0 到 255 之间的字符值可以用八进制文字 from "\000"to表示"\377"

那么不"\400"应该是编译时错误吗?然而 Eclipse 并没有抱怨……这是怎么回事?

4

2 回答 2

8

它将其解释为 "\40" + "0"

Java 语言规范在此处对此进行了描述。

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
于 2011-07-25T16:40:16.620 回答
5

它属于

\ OctalDigit OctalDigit

...后跟“0”。它属于

\ ZeroToThree OctalDigit OctalDigit

...所以它不是模棱两可或超出范围。有关详细信息,请参阅Java 语言规范的第 3.10.6 节。

请注意,由于这个原因,您不能将其用作字符文字:

char x = '\377'; // Fine
char y = '\400'; // Error: unclosed character literal
于 2011-07-25T16:40:28.483 回答