1. Por que precisamos de conversão de tipos?
Java — é uma linguagem fortemente tipada. Se o computador tem uma “caixinha” para um número, tentar enfiar texto ali — é mais ou menos como tentar colocar um garfo em uma porta USB. O compilador não vai perdoar! 😡
No entanto, no dia a dia trabalhamos frequentemente com diferentes tipos de dados ao mesmo tempo. Por exemplo, você tem uma string que contém um número. É aí que precisamos da conversão (ou transformação) de tipos.
Veja um exemplo. Suponha que você queira armazenar a quantidade de usuários:
int a = 1;
int b = "2";
int c = "três";
O compilador logo dirá: “Você está me confundindo com quem? Eu não sei converter uma string em número automaticamente — não dá sem a sua ajuda. É preciso converter a string para número de forma explícita”.
Em Java há várias maneiras de conversão, e cada uma — com seus prós, contras e armadilhas típicas.
2. Convertendo int para String
No nosso trabalho, muitas vezes precisamos obter a representação em string de um número: por exemplo, para exibi-lo na tela, salvar em arquivo, enviar pela rede, concatenar com texto etc. Em Java há diversas maneiras para isso, cada uma conveniente em situações diferentes.
Função String.valueOf()
Este é o método principal e mais comum:
int number = 42;
String str = String.valueOf(number); // str == "42"
String.valueOf() converte o valor em uma string adequada ao tipo do objeto passado para ela.
Concatenação com string vazia
Uma forma antiga, mas funcional:
int number = 42;
String str = "" + number;
Essa abordagem funciona para casos simples, mas é menos explícita para quem lê o código.
3. Conversão implícita para string
Como já foi dito acima, os desenvolvedores de Java fizeram com que absolutamente todas as variáveis, objetos e expressões em Java possam ser convertidos para o tipo String.
Além disso, isso acontece automaticamente quando somamos o tipo String com algum outro tipo. Exemplos:
int a = 5;
String name = "Anya" + a; // name contém a string Anya5
int a = 5;
String city = a + "New York" + a; // city contém a string 5New York5
int number = 10;
String code = "Yo";
String message = "Hello! " + number + code; // message contém a string Hello! 10Yo
Em todos os três exemplos somamos tranquilamente variáveis do tipo int e String, e o resultado sempre foi do tipo String.
Exemplos:
int a = 5;
String name = "1" + a; // name contém a string 15
int a = 5;
String city = a + "9" + a; // city contém a string 595
int number = 10;
String code = "10";
String message = "" + number + code; // message contém a string 1010
A operação de adição é avaliada da esquerda para a direita, então o resultado pode ser um pouco inesperado. Exemplo:
int a = 5;
String name = a + a + "1" + a; // name contém a string 1015
Ordem de avaliação: ((a + a) + "1") + a
4. Convertendo string para número
Para converter um número em string em Java, basta somá-lo a uma string vazia:
String str = "" + chislo;
E o que fazer se for preciso converter uma string em número? Nem toda string pode ser convertida em número. Mas se a string contiver apenas dígitos, então é possível. Para isso, em Java existe uma função específica.
O comando fica assim:
int x = Integer.parseInt(stroka);
Onde int x é a declaração da variável inteira x, e stroka é um número fornecido como string (uma string composta por dígitos).
Exemplos:
String str = "123";
int number1 = Integer.parseInt(str); // number1 contém o número 123
int number2 = Integer.parseInt("321"); // number2 contém o número 321
int number3 = Integer.parseInt("321" + 0); // number3 contém o número 3210
int number4 = "321"; // Não compila: a variável é do tipo int, mas o valor é do tipo string
Para valores negativos isso também funciona: a função Integer.parseInt() é bem inteligente.
GO TO FULL VERSION