10

我正在使用石英进行调度。

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

它接受 5 个参数。(秒、分钟、小时、daysOfMonth、month)。

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

但是当我将第四个参数作为“9”而不是“09”传递时,它就起作用了。

谁能解释我这个错误?

4

5 回答 5

34

在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+)
于 2009-06-09T13:24:59.587 回答
20

八进制中没有 9 (前面的 0 会得到什么)。0-7,只有。

于 2009-06-09T13:22:07.377 回答
13

当您在数字前面加上 0(“09”而不是“9”)时,Java(以及 C 和许多其他语言)会将数字解释为八进制 - base-8。

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

于 2009-06-09T13:23:43.800 回答
11

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

于 2009-06-09T13:22:50.493 回答
3

10是你有多少个数字,而010是如果你不数你的拇指的话你得到的数字。

于 2009-06-09T16:35:35.957 回答