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

pra*_*ddy 7 java octal

请解释下面的代码

public class Example{
   public static void main(String[] args)
   {
      int i[]={9};
       System.out.println("\700");
   }
}
Run Code Online (Sandbox Code Playgroud)

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

请说清楚.谢谢

Jon*_*eet 8

基本上,你有两个角色:'\70''0'.

octals的转义序列在JLS中记录为:

OctalEscape:
\ OctalDigit 
\ OctalDigit OctalDigit 
\ ZeroToThree OctalDigit OctalDigit 
Run Code Online (Sandbox Code Playgroud)

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

所以,现在我们只需要知道为什么'\70''8'......那是因为八进制70是十进制56或十六进制38,这是'8'UTF-16代码单元.