Conversão de octal para decimal

Estou com uma duvida em relação ao seguinte trecho de código:

public class Program {

	 public static void main(String [ ] args) {
         int a [ ] = { 1,2,053,4};
         int b [ ][ ] = { {1,2,4} , {2,2,1},{0,43,2}};
         System.out.print(a[3] == b[0][2] );
         System.out.print(" " + (a[2] == b[2][1]));
        }
}

Porque ambos são verdadeiros sendo que a[2] é 053 e b[2][1] é 43?

Eu dei uma pesquisada e notei que é feita uma conversão de octal para decimal, mas o que eu não entendo é como ele sabia que o 053 estava em octal.

É uma regra da sintaxe do Java. Literais numéricos que começam com 0 são interpretados como números no sistema octal. Em memória, todos são representados da mesma forma e por isso o == é verdadeiro.

2 curtidas

Estou estudando para certificação e surgiu essa questão achei que era uma pegadinha kkk, mas depois eu notei outra questão que veio assim o array a[0b101] pensei comigo que iria dar algum tipo de erro por causa daquele “b”, mas na verdade o “b” ele dá significado que é binário ai voltei nessa questão e consegui resolver, mas obrigadão sou novo aqui no guj espero poder contribuir também.