0到255之间的字符值可以用"\000"
到"\377"
的八进制文字表示。
那么"\400"
不应该是编译时错误吗? Eclipse没有抱怨,但是......这里发生了什么?
答案 0 :(得分:8)
它将其解释为“\ 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
答案 1 :(得分:5)
属于
的构建\ OctalDigit OctalDigit
...后跟'0'。 不属于
\ ZeroToThree OctalDigit OctalDigit
...所以它不含糊或超出范围。有关更多详细信息,请参阅Java语言规范的section 3.10.6。
请注意,出于这个原因,您无法将其用作字符文字:
char x = '\377'; // Fine
char y = '\400'; // Error: unclosed character literal