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

时间:2015-03-25 14:29:26

标签: java octal

请解释以下代码

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

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

请说清楚。谢谢

1 个答案:

答案 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'