为什么这会发生在java?

时间:2012-08-24 13:00:43

标签: java

  

可能重复:
  Integer with leading zeroes

我对Java很新。我这样做了:

System.out.println(01111);

打印4680。为什么它没有打印01111

提前致谢。

5 个答案:

答案 0 :(得分:8)

如果要打印字符串“01111”,请将其放在引号中。这就是你在Java中指定一串字符的方法。

没有十进制数字01111,因此尝试打印出十进制数字01111是不可能的。

你得到4680的原因是,在Java源代码中,数字常量前的前导零表示数字以八进制指定,数字以十进制打印。 11110八进制= 4680十进制。 (你必须完成01110才能获得4680,01111会给你585。)

答案 1 :(得分:2)

它打印585,而不是4680。

Integer literals that start with 0 are octal numerals。所以1111是585的八进制表示。

答案 2 :(得分:1)

在0之前的整数表示它是octal number字面值,因此您的数字为1*8^3+1*8^2+1*8^1+1*8^0

答案 3 :(得分:0)

因为0前缀表示八进制整数(基数为8)。所以,1111八进制是小数点后585。

答案 4 :(得分:0)

这是您尝试打印的数字的octal表示。您应该获得的输出是"585"而不是"4680"