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