В Java, если вы определяете int с ведущим «0», означает, что вы определяете число в Octal.
int a = 08 выдает ошибку вне диапазона, потому что нет никакого число '8' в октябре. Octal предоставляет только 0-7 номеров.
Если вы определяете a = 07, то это не дает ошибку вне диапазона, потому что цифры «0» и «7» находятся в пределах Octal.