【问题标题】:why this happens in java? [duplicate]为什么这发生在java中? [复制]
【发布时间】:2012-08-24 13:00:42
【问题描述】:

可能重复:
Integer with leading zeroes

我对 Java 很陌生。我这样做了:

System.out.println(01111);

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

提前致谢。

【问题讨论】:

  • 你可能是想用System.out.println(011110); 来得到那个结果。

标签: java


【解决方案1】:

如果你想打印出 string "01111" 然后把它放在引号里。这就是在 Java 中指定字符串的方式。

没有十进制数 01111,所以试图打印出十进制数 01111 是不可能的。

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

【讨论】:

  • (很好的答案......但你应该提到“文字”和“源代码”这两个词,因为在其他情况下不使用前导零表示八进制表示法。)
  • @StephenC:谢谢。完成。
【解决方案2】:

它打印的是 585,而不是 4680。

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

【讨论】:

    【解决方案3】:

    整数前面有 0 表示它是 octal number 字面量,所以你的数字是 1*8^3+1*8^2+1*8^1+1*8^0

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        这是您尝试打印的号码的octal 表示。您应该得到的输出是 "585" 而不是 "4680"

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-18
          • 2013-12-09
          • 2012-09-04
          • 1970-01-01
          • 1970-01-01
          • 2018-04-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多