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

Sha*_*shi 9 java integer octal

我用石英做schedulling.

TriggerUtils.getDateOf(0,40,18,09,06);
Run Code Online (Sandbox Code Playgroud)

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

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

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

有谁能解释我这个错误?

Jam*_*uis 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+)
Run Code Online (Sandbox Code Playgroud)


Eri*_*ric 20

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


pou*_*def 13

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

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


小智 11

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