Tá acabando!

Compre agora com desconto
Corra enquanto há tempo!

dias

:

horas

:

minutos

:

segundos

Converter int para String em Java

Alex Felipe Victor Vieira
Alex Felipe Victor Vieira

Compartilhe

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:


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 Victor Vieira
Alex Felipe Victor Vieira

Alex é instrutor e desenvolvedor e possui experiência em Java, Kotlin, Android. Criador de mais de 40 cursos, como Kotlin, Flutter, Android, persistência de dados, comunicação com Web API, personalização de telas, testes automatizados, arquitetura de Apps e Firebase. É expert em Programação Orientada a Objetos, visando sempre compartilhar as boas práticas e tendências do mercado de desenvolvimento de software. Atuou 2 anos como editor de conteúdo no blog da Alura e hoje ainda escreve artigos técnicos.

Veja outros artigos sobre Programação