"E agora a parte mais interessante. Vou falar sobre conversões de tipo. Variáveis ​​não podem mudar seus tipos, mas há um lugar onde você pode converter tipos. Esse lugar é uma operação de atribuição. "

"Você pode atribuir variáveis ​​de tipos diferentes umas às outras. Ao fazer isso, o valor de uma variável (de um tipo específico) é convertido em um valor do outro tipo e atribuído à outra variável. "

"Podemos apontar dois tipos de conversões: ampliar conversões primitivas e estreitar conversões primitivas. Ampliar é como mover coisas de uma cesta pequena para uma grande. O procedimento é normal e indolor. Estreitar é análogo a tirar coisas de uma cesta grande e colocá-los em um menor. Ao fazer isso, você pode não ter espaço suficiente; você pode ter que jogar algo fora " .

"Aqui estão os tipos classificados de acordo com o tamanho da 'cesta':"

Conversão de tipo

"Apenas alguns comentários:

1. A cesta do char é do mesmo tamanho que a do short, mas você não pode mover as coisas livremente de um para o outro. Quando você move valores de short para char , valores menores que 0 sempre serão perdidos. Quando você move valores de char para short, valores maiores que 32.000 serão perdidos.

2. Ao transformar números inteiros em números fracionários, os dígitos menos significativos do número podem ser descartados. No entanto, isso é aceitável, pois o objetivo de um número fracionário é armazenar um valor aproximado."

" Ao realizar conversões de restrição, devemos informar explicitamente ao compilador que não cometemos um erro: estamos descartando parte do número de propósito. Usamos um operador de conversão ( ou seja, o nome do tipo entre parênteses ) para fazer isso."

"É assim que você deve atribuir variáveis ​​de diferentes tipos:"

código Java Descrição
byte a = 115;
int b = a;
Ampliando a conversão primitiva. Está tudo ótimo.
int c = 10000;
byte d = (byte) c;
Estreitando a conversão primitiva . Devemos declarar explicitamente que os bytes extras devem ser descartados.
int c = 10;
byte d = (byte) c;
Estreitando a conversão primitiva. Devemos declarar explicitamente que os bytes extras devem ser descartados, mesmo que sejam iguais a 0.
float f = 10000;
long l = (long) (f * f);
float f2 = l;
long l2 = (long) f2;
Ao atribuir a um float, ocorre uma conversão primitiva de alargamento. Ao atribuir um float a um long, ocorre uma conversão primitiva de estreitamento. É necessário um operador de conversão.
double d = 1;
float f = (float) d;
long l = (long) f;
int i = (int) l;
short s = (short) i;
byte b = (byte) s;
Limitando as conversões em todas as operações de atribuição, exceto na primeira linha. Essas conversões exigem que indiquemos explicitamente a conversão de tipo.
3
Tarefa
Java Syntax,  nível 10lição 3
Bloqueado
Code entry
Sometimes you don't need to think, you just need to hammer it out! As paradoxical as it may seem, sometimes your fingers will "remember" better than your conscious mind. That's why while training at the secret CodeGym center you will sometimes encounter tasks that require you to enter code. By entering code, you get used to the syntax and earn a little dark matter. What's more, you combat laziness.

" Um operador de conversão deve ser colocado antes de um número/variável sempre que parte do número for descartada ou quando ocorrer uma conversão primitiva de restrição. O operador de conversão afeta apenas o número/variável que o segue diretamente."

código Java Descrição
float f = 10000;
long l = (long) f * f;
Apenas uma das duas variáveis ​​é convertida em long: a multiplicação de long e float é igual a float.
float f = 10000;
long l = (long) (f * f);
A expressão inteira é lançada para um longo.

"Eu vejo."