В Java и некоторых других языках целочисленный литерал, начинающийся с 0
, интерпретируется как восьмеричная (база 8).
Для одноразрядных чисел (кроме 08
и 09
, которые не допускаются), результат будет таким же, поэтому вы можете не заметить, что они интерпретируются как восьмеричные.
Например:
010 == 8
024 == 20
Поскольку восьмеричные литералы обычно не то, что вы хотите, вы всегда должны заботиться о том, чтобы никогда не начинать целостный литерал с 0
, если, конечно, вы на самом деле не пытаетесь написать нуль.