Artigos > Programação

Valores válidos para variáveis em Java

Alex Felipe
Alex Felipe

Durante o meu treinamento para certificação da Oracle surgiu o seguinte problema:

Imagine que temos a classe telefone:


public class Telefone {

private final int ddd; private final long numero;

public Telefone(int ddd, long numero) { 
    this.ddd = ddd; 
    this.numero = numero; 
}

//métodos

}

Ótimo, agora vou cadastrar um telefone de São Paulo (SP):


public static void main (String[] args){ 
    Telefone telSP = new Telefone(011, 33229000);
}

vou adicionar mais 2 telefones, um de Salvador(BA) e outro de Refice(PE):


Telefone telSP = new Telefone(011, 33229000);
Telefone telBA = new Telefone(071, 55339000);
Telefone telPE = new Telefone(081, 22669000);

Ué, o telefone de Recife não compila? Como assim? Deixa eu imprimir o telSP e o telBA:


Telefone telSP = new Telefone(011, 33229000);
Telefone telBA = new Telefone(071, 55339000);
System.out.println(telSP); System.out.println(telBA);

Resultado:

 > (9) 33229000 (57) 55339000

9? 57? Como assim?! Que estranho. A variável do tipo int, além de receber inteiros, aceita números octais, hexadecimais e até mesmo binários!

Nesse caso, quando utilizamos o 0 na frente do número, indicamos que estamos lidando com números na base 8, ou seja: estrutura de números entre 1, 2, 3, 4, 5, 6 e 7, por isso os valores foram 9 e 57. Isso também explica o motivo de não compilar o código de Recife(081), já que em octal, não existe o número 8 ou 9. Então se tentarmos compilar um telefone de Campinas(SP):


//9 não faz parte dos números octais 
int ddd = 019;

Não compila também! Para resolver esse caso, bastaria retirar o 0 em cada um dos ddds:


Telefone telSP = new Telefone(11, 33229000); 
Telefone telBA = new Telefone(71, 55339000); 
Telefone telPE = new Telefone(81, 22669000); 
System.out.println(telSP); 
System.out.println(telBA); 
System.out.println(telPE);

Verificando o resultado:

 > (11) 33229000 (71) 55339000 (81) 22669000

Agora o meu sistema cadastra os telefones conforme o esperado!

Vimos que nem sempre os valores que esperamos dar certo funcionam e por isso é importante compreender todas as restrições que as nossas variáveis possuem. Ficou curioso a respeito de outros valores interessantes que a variável int e as demais podem receber? Dê uma olhada nos nossos cursos da formação Java.

Leia também:

Artigos de Tecnologia e Negócios > Programação

Cursos profissionais de Programação é na Alura, comece agora!

  • 1245 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1245 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1245 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1245 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso por 1 ano

Estude 24h/dia onde e quando quiser

Novos cursos todas as semanas