[Resolvido] - Variável int com zeros a esqueda, exibe outro valor

Não entendo porque ocorre isso. Alguém sabe?

Eu tenho duas linhas de código:

int numero = 0047;
System.out.println(numero);

//O resultado deveria ser: "47" porque uma variável do tipo int remove os zeros da esquerda, correto?
//Quando eu coloco para imprimir o valor com a variável 0047 ou 047 o valor impresso é: 39 e não 47

O Java trata números inteiro iniciados com 0 como sendo números de base octal.

int num1 = 011;//numero em octal
int num2 = 11;//numero em decimal

System.out.println(num1);//vai imprimir 9
System.out.println(num2);//vai imprimir 11

você pode passa 3 tipos de literal um int
com base 10 (Decimal)
com base 8 (Octal) //obs: este começa com zero
com base 16(Hexadecimal) //16 simbolos 0 1 2 3 4 5 6 7 8 9 a b c d e f

os de base 10 são ou números normais

0 1 2 3 4 5 6 7 8 9 10 11 15 16 17 18 19 29 21 ..

os Octal são que iniciar com 0 seguido de um numero.

01 02 03 04 05 06 07 010 011 012 013 014 015 016 017 020 021..  // obs: precisa do zero na frente e quando chega no 7 o próximo aumenta um numero na frente como ser fosse binário.

e os hexadecimal que começa com 0x seguindo de um ou vários caractere de (zero)0 a f.
listagem de um a 15 :

 0 1 2 3 4 5 6 7 8 9 a b c d e f

int _decimal = 10; int _octal = 012 ; int _hexadecimal = 0xa; System.out.println(_decimal+" - "+_octal+" - "+_hexadecimal);

http://www.devmedia.com.br/entendendo-as-literais-em-java/26526