请解释以下代码
public class Example{
public static void main(String[] args)
{
int i[]={9};
System.out.println("\700");
}
}
请不要告诉我,八进制值应该小于377.我已经知道但是当我运行上述程序时,我得到 80 的输出。我想知道为什么会这样发生呢?
请说清楚。谢谢
答案 0 :(得分:7)
基本上,你有两个角色:'\70'
和'0'
。
octals的转义序列为documented in the JLS:
OctalEscape:
\ OctalDigit
\ OctalDigit OctalDigit
\ ZeroToThree OctalDigit OctalDigit
最后一个不适用于你的情况,因为'7'不在ZeroToThree中,但'7'和'0'都是八进制数字,所以它匹配第二个模式。
所以,现在我们只需要知道为什么'\70'
是'8'......那是因为八进制70是十进制56或十六进制38,这是UTF-16 code unit for '8'。