CodeGym /Cursos /JAVA 25 SELF /Conversão entre tipos de dados

Conversão entre tipos de dados

JAVA 25 SELF
Nível 2 , Lição 3
Disponível

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.

Importante! Não se podem realizar operações aritméticas com o tipo String. Mesmo que a string seja composta apenas por dígitos.

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);
Conversão de string para número

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.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION