【发布时间】:2012-08-24 13:00:42
【问题描述】:
我对 Java 很陌生。我这样做了:
System.out.println(01111);
打印4680。为什么没有打印出01111?
提前致谢。
【问题讨论】:
-
你可能是想用
System.out.println(011110);来得到那个结果。
标签: java
我对 Java 很陌生。我这样做了:
System.out.println(01111);
打印4680。为什么没有打印出01111?
提前致谢。
【问题讨论】:
System.out.println(011110); 来得到那个结果。
标签: java
如果你想打印出 string "01111" 然后把它放在引号里。这就是在 Java 中指定字符串的方式。
没有十进制数 01111,所以试图打印出十进制数 01111 是不可能的。
您得到 4680 的原因是,在 Java 源代码中,数字常量前的前导零表示该数字以八进制指定,而数字以十进制打印。 11110 八进制 = 4680 十进制。 (你必须完成01110 才能得到 4680,01111 会给你 585。)
【讨论】:
它打印的是 585,而不是 4680。
Integer literals that start with 0 are octal numerals。所以 1111 是 585 的八进制表示。
【讨论】:
整数前面有 0 表示它是 octal number 字面量,所以你的数字是 1*8^3+1*8^2+1*8^1+1*8^0。
【讨论】:
因为 0 前缀表示八进制整数(以 8 为基数)。所以,八进制的 1111 是十进制的 585。
【讨论】:
这是您尝试打印的号码的octal 表示。您应该得到的输出是 "585" 而不是 "4680"。
【讨论】: