在Java中,前导零如何改变数字字面值?

3

我和我的朋友们在看到这个语句和答案后,一直对它感到困惑。这是如何工作的?

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

等于63吗?


1
这与printf无关。 - David Conrad
Oracle为您提供支持:http://docs.oracle.com/javase/tutorial/java/data/numberformat.html - crAlexander
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - 689Shinigami
@crAlex:我在提问之前就已经去过那里了,但那并没有解释关于八进制数的任何东西,尽管我是在询问printf函数。 - 689Shinigami
3个回答

7

077是一个八进制数,相当于7 x 81 + 7 x 80,即63十进制。要显示八进制值,可以执行以下操作:

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

2

0

077 = 7 * 8^0 + 7 * 8^1 = 63; 0123 = 3 * 8^0 + 2 * 8^1 + 1 * 8^2 = 3 + 16 + 64 = 83; First 0 means octal value.

0x77 - 是十六进制值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接