CodeGym /Blogue Java /Random-PT /Transmissão de tipo Java
John Squirrels
Nível 41
San Francisco

Transmissão de tipo Java

Publicado no grupo Random-PT

O que é conversão de tipo em Java?

Um tipo de dados é um conjunto predefinido de valores que especifica o tipo de valores que podem ser armazenados nele junto com a operação que pode ser realizada neles.
O Java Type Casting é um processo pelo qual um tipo de dados é convertido em outro.
Pode ser implícito e explícito . A conversão implícita, também conhecida como conversão automática, é feita pelo compilador. A conversão de tipo explícita é feita manualmente pelo programador no código.

Por que a conversão de tipo é necessária?

Java possui diferentes tipos de dados primitivos que requerem diferentes espaços na memória. Isso pode causar problemas de compatibilidade ao atribuir um valor de um tipo de dados a outro. Se os tipos de dados já forem compatíveis, a conversão de tipos será feita automaticamente pelo compilador. Assim, a conversão de tipos resolve um grande problema de compatibilidade ao lidar com diferentes tipos de dados em nosso programa.

Tipos de conversão de tipo Java

Existem dois tipos de conversão de tipo em Java.
  1. Ampliando a conversão de tipo - também conhecida como conversão de tipo implícita ou automática
  2. Estreitando a conversão de tipo - também conhecida como conversão de tipo explícita ou manual

Fundição de tipo ampliado

A ampliação da conversão de tipos, como o nome sugere, refere-se à ampliação de um tipo de dados menor para um tipo de dados maior. Realizamos essa conversão de tipo quando queremos converter um tipo pequeno em um tipo grande. Os tipos de dados devem ser compatíveis entre si. Não há conversão implícita do tipo numérico para char ou booleano. Em Java, os tipos char e boolean não são compatíveis.
byte -> curto -> char -> int -> longo -> float -> duplo
Esse tipo de conversão é feito automaticamente pelo compilador sem nenhuma perda de informação. Não requer nenhum gatilho externo por parte do programador.

Exemplo

//Automatic type conversion
public class WideningExample {
   public static void main(String[] args) {

       int i = 100;
       System.out.println("int value: " + i);

       // int to long type
       long l = i;
       System.out.println("int to long value: " + l);

       // long to float type
       float f = l;
       System.out.println("int to float value: " + f);


       byte b = 1;
       System.out.println("byte value: " + b);

       // byte to int type
       i = b;
       System.out.println("byte to int value: " + i);

       char c = 'a';
       System.out.println("char value: " + c);

       // char to int type
       i = c;

       // prints the ASCII value of the given character
       // ASCII value of 'a' = 97
       System.out.println("char to int value: " + i);
   }
}

Saída

valor int: 100 valor int para longo: 100 valor int para float: 100,0 valor de byte: 1 byte para valor int: 1 valor char: um valor char para int: 97

Explicação

No código acima, mostramos a ampliação da conversão de tipos, que é feita automaticamente pelo compilador. Primeiro de tudo, atribuímos valores a int , byte e char . Em seguida, atribuímos os valores int a long e float , ambos maiores que int . Também atribuímos os valores byte e char a int . Tanto byte quanto char são tipos de dados menores que int , portanto, essas conversões estavam implícitas.

Restrição de tipo de fundição

O estreitamento do typecasting, como o nome sugere, refere-se ao estreitamento de um tipo de dados maior para um tipo de dados menor. Realizamos essa conversão de tipo quando queremos converter um tipo grande em um tipo pequeno.
duplo -> float -> longo -> int -> char -> curto -> byte
Para este tipo de conversão, substituímos a conversão padrão do Java especificando nossa própria conversão. Para conseguir isso, escrevemos a variável ou valor que precisa ser digitado precedido pelo tipo de dados de destino entre parênteses '()'. No entanto, este tipo de fundição pode resultar numa possível perda de precisão.

Exemplo

//Manual Type Conversion
public class NarrowingExample {
   public static void main(String[] arg) {

       // double data type
       double d = 97.04;
       // Print statements
       System.out.println("double value: " + d);

       // Narrowing type casting from double to long
       // implicitly writing the target data type in () followed by initial data type
       long l = (long) d;

       // fractional part lost - loss of precision
       System.out.println("long value: " + l);

       // Narrowing type casting from double to int
       // implicitly writing the target data type in () followed by initial data type
       int i = (int) l;

       // fractional part lost - loss of precision
       System.out.println("int value: " + i);

       // Narrowing type casting from double to int
       // implicitly writing the target data type in () followed by initial data type
       char c = (char) i;

       // displaying character corresponding to the ASCII value of 100
       System.out.println("char value: " + c);
   }
}

Saída

valor duplo: 97,04 valor longo: 97 valor int: 97 valor char: a

Explicação

O estreitamento do typecasting precisa ser feito explicitamente pelo programador usando uma sintaxe padrão. No programa acima, começamos com um valor double que é maior que os tipos de dados long e int . Nós transformamos este double em long e int usando parênteses com os tipos de dados de destino desejados. Também transformamos manualmente 'int' em 'char'.

Conclusão

Ao final desta postagem, esperamos que você esteja familiarizado com o Java Type Casting em detalhes. Você aprendeu os dois tipos de conversão de tipo em java. Você também aprendeu como converter manualmente os tipos de dados não compatíveis usando Narrowing typecasting. Você pode tentar outras combinações de tipos de dados com valores diferentes para entendê-los com mais profundidade. Continue praticando para um domínio mais profundo do conceito. Até então, continue crescendo e brilhando!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION