如果识别出9,则无法识别09

时间:2009-06-09 13:20:20

标签: java integer octal

我正在使用石英进行schedulling。

TriggerUtils.getDateOf(0,40,18,09,06);

它接受5个参数。 (秒,分钟,小时,天,月,月)。

当我将第四个参数传递为“09”时。 Eclipse给我错误“int类型的文字八进制09(数字9)超出范围”。

但是当我将第四个参数传递为“9”而不是“09”时,它可以正常工作。

有人能解释我这个错误吗?

5 个答案:

答案 0 :(得分:33)

在java中,如果要定义一个整数,前导'0'将表示您在八进制中定义一个数字

int i = 07; //integer defined as octal
int i = 7; // integer defined as base 10
int i = 0x07; // integer defined as hex
int i = 0b0111; // integer defined as binary (Java 7+)

答案 1 :(得分:20)

Octal中没有9(你前面的0得到了什么)。 0-7,仅限。

答案 2 :(得分:13)

如果您在数字前加0(“09”而不是“9”),则Java(和C和许多其他语言)将数字解释为八进制 - base-8。

“09”不是八进制中的有效数字 - 任何单个数字最多可以是“7”(因为在八进制中,数字从0..7开始)。

答案 3 :(得分:11)

以零数字开头的数字被视为八进制(基数为8)的文字,而9不是有效的八进制数字。

答案 4 :(得分:3)

10 是您拥有的数字,而 010 是您不计算拇指的数字。