Perché 09 “troppo grande” di un numero intero?

Pensano che sia:

Possibile duplicato:
Numero intero con zeri iniziali

Ma se controlli Intero con zeri iniziali, scoprirai che la domanda è posta prima del lancio di jdk7 e quindi ha sforzi di ricerca più bassi. Ma in jdk7 ci sono alcuni cambiamenti e aggiunte agli interi. Ecco le risposte che sono aggiornate su jdk7.

Ho un codice:

class Test{ public static void main(String[] args){ int x=09; System.out.println(x); } } 

Nella compilazione dà un errore: numero intero troppo grande: 09

Perché lo fa?

Di nuovo, se cambio il codice in:

 class Test{ public static void main(String[] args){ int x=012; System.out.println(x); } } 

Ora l’output è 10

Perché dà l’output 10 invece di 12?