Converter int para String em Java

Converter int para String em Java

Completei mais um curso na Alura e aumentei a minha pontuação:


String aluno = “Alex Felipe”; 
int pontos = 12000;

Para imprimir a minha pontuação basta concatenar a variável aluno + pontos dentro de um sysout:

Banner da promoção da black friday, com os dizeres: A Black Friday Alura está chegando. Faça parte da Lista VIP, receba o maior desconto do ano em primeira mão e garanta bônus exclusivos. Quero ser VIP

System.out.println(aluno + " - " + pontos);

Mas, como eu poderia fazer com que o aluno e a pontuação fossem uma variável só? É simples! A mesma coisa, basta "converter" a variável inteira (int) para String:

String descricao = aluno + " - " + pontos;

Mas agora entrei no instrutor Guilherme Silveira, e olha os pontos dele:

> Guilherme Silveira - 1893769 

Olhando de cara qual é o valor desse número? Um milhão e oitocentos mil? Dezoito milhões?Cento e oitenta milhões? Vou ter que contar com o dedo na tela para saber o valor exato, muito chato e é certeza que eu vou errar!

Para separar a pontuação por casas podemos utilizar a classe NumberFormat:


String aluno = "Guilherme Silveira"; 
int pontos = 1893769;
String descricao = aluno + " - " + NumberFormat.getInstance().format(pontos); System.out.println(descricao);

Resultado:

> Guilherme Silveira - 1.893.769

Ótimo! O número foi formatado como esperado, porém na maquina do João o resultado foi:

> Guilherme Silveira - 1,879,654

Calma aí. Está dependendo da máquina??? Isso ocorre pois o getInstance devolve um formatador baseado na linguagem configurada na máquina. Para informar uma região específica basta definir uma localização, um Locale.

No meu caso, quero a língua portuguesa ("pt"), com a variação do português brasileiro ("BR").


Locale brasil = new Locale("pt", "BR");
String descricao = aluno + " - " + NumberFormat.getInstance(brasil).format(pontos); System.out.println(descricao);

Resultado:

> Guilherme Silveira - 1.893.769 

Agora tanto a minha máquina como a do meu colega, ou ainda, a máquina de produção imprimem o mesmo resultado.

Quando começamos a programar, aprendemos a concatenar e parece o suficiente… mas mesmo em uma tarefa simples é importante seguirmos 3 passos:

  • números acima de 999 ficaram legíveis?
  • use o Locale adequado.
  • teste em mais de uma maquina.

A classe Locale e o conceito de regionalização é tambem explicado com mais detalhes nesse post da Caelum.

Alex Felipe
Alex Felipe

Alex é instrutor e desenvolvedor e possui experiência em Java, Kotlin, Android. Atualmente cria conteúdo no canal https://www.youtube.com/@AlexFelipeDev.

Veja outros artigos sobre Programação