Números que mudam no Java

6 respostas Resolvido
java
M

Olá Pessoal!
Estou com uma pequena dúvida, estudando para a certificação em Java 7, me deparei com seguinte exercício:

private void ass(){

int a[] = {1, 2, 053, 4};

int b[][] = {{1,2,4},{2,2,1},{0,43,2}};
System.out.println(a[3]==b[0][2]); 
System.out.println(" " + (a[2]==b[2][1]));

}

Naturalmente, assinalei a opção em que a saída era (true, false), porém errei a questão. Então fui verificar o que havia acontecido e notei que quando se coloca o “0” (ZERO) na frente do número, ele decrementa a dezena, não sabia disso e não consigo entender o porquê disso.
Gostaria que alguém pudesse me dar uma ajuda para compreender melhor.

6 Respostas

4mega

É por conta do tipo de dados (int) que trabalha com inteiros ignorando os zeros a esquerda, acredito que a forma mais correta de trabalhar com valores que possuam zero na frente seria com String, posso estar errado, mas nunca me deparei com uso de valores numéricos com zero na frente se n fosse para CPF’s, e nesses casos eu sempre usei String.

peczenyj

quando um numero começa com 0 ele é considero um numero OCTAL ( base 8 )

não tem nada haver com decrementar dezena.

tanto que 08 e 09 vão dar erro de compilação pq base 8 vai de 0 a 7.

Z
Solucao aceita

Exatamente o que o peczenyj falou.

O número está em OCTAL 053 que é o mesmo que 43 em DECIMAL. Por isso é true true.

(5 * 8¹) + (3 * 8º) = 43

Lembrando que qualquer número elevado a 0 é igual a 1.

http://www.robotroom.com/NumberSystems4.html

Abs

M

Obrigado @Zabimaru agora ficou muito claro.

M

Obrigado @peczenyj exatamente isso!

M

É um pouco diferente disso, mas agradeço a disponibilidade.

Criado 15 de dezembro de 2016
Ultima resposta 15 de dez. de 2016
Respostas 6
Participantes 4