class A {
public static void main(String args[]) {
char c= '\777';
System.out.println(c);
}
}
这给出了编译错误(在Java 8编译器上运行)。
转义序列的八进制表示法格式为'\ xxx',但在上述情况下不起作用,char c ='\ 077'有效。
这可能是什么原因?
最佳答案
JLS, Section 3.10.6,“字符和字符串文字的转义序列”,指出八进制char
文字最多可以包含3个八进制数字,如果有3个,则第一个数字限制为0-3。
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
最大
\377
的十进制值为255,因此看起来已经完成,以便该值适合一个(无符号)字节。