09被识别为9被识别

我用石英做schedulling。

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

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

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

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

有谁能解释我这个错误?

在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+) 

八进制中没有9(前一个0得到的结果)。 仅限0-7。

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

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

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

10是你有多少位数,而010是你不计算你的拇指。