领先的零如何改变Java中的数字文字?

看到它和答案之后,我和我的朋友们在Java中对这句话感到困惑。 这个怎么用?

System.out.printf("%d", 077); 

等于63?

077是八进制数 ,等于7 x 8 1 + 7 x 8 0 ,即十进制63 。 要显示您可以执行的八进制值

 System.out.printf("%o", 077); 

当您定义带有0前缀的文字整数时,编译器会将其视为整数基数8.(八进制)。

查看这篇文章http://rodrigosasaki.com/2013/06/10/number-literals-in-java/

因此,Octal base中的77值实际上是Decimal base中的63。

077 = 7 * 8 ^ 0 + 7 * 8 ^ 1 = 63; 0123 = 3 * 8 ^ 0 + 2 * 8 ^ 1 + 1 * 8 ^ 2 = 3 + 16 + 64 = 83; 第一个0表示八进制值。

0x77 – 是hexval。