使用转义序列打印 java 中的八进制字符

Printing Octal characters in java using escape sequences

请解释下面的代码

public class Example{
   public static void main(String[] args)
   {
      int i[]={9};
       System.out.println("0");
   }
}

请不要告诉我八进制值应该小于 377。我已经知道了,但是当我 运行 上面的程序时,我得到的输出是 80。我想知道为什么会这样?

请给个明确的解释。谢谢

基本上,您有两个字符:'''0'

八进制的转义序列是documented in the JLS如:

OctalEscape:
\ OctalDigit 
\ OctalDigit OctalDigit 
\ ZeroToThree OctalDigit OctalDigit 

最后一个不适用于您的情况,因为“7”不在 ZeroToThree 中,但“7”和“0”都是八进制数字,因此它与第二个模式匹配。

所以,现在我们只需要知道为什么 '' 是 '8'...那是因为八进制的 70 是十进制的 56 或十六进制的 38,也就是 UTF-16 code unit for '8'.