"Y ahora la parte más interesante. Les hablaré sobre las conversiones de tipos. Las variables no pueden cambiar sus tipos, pero hay un lugar donde pueden convertir tipos. Ese lugar es una operación de asignación " .

"Puedes asignar variables de diferentes tipos entre sí. Al hacerlo, el valor de una variable (de un tipo particular) se convierte en un valor del otro tipo y se asigna a la otra variable" .

"Podemos señalar dos tipos de conversiones: conversiones primitivas de ampliación y conversiones primitivas de estrechamiento. La ampliación es como mover cosas de una cesta pequeña a una grande. El procedimiento es anodino e indoloro. La reducción es análoga a sacar cosas de una cesta grande. y poniéndolos en uno más pequeño. Cuando hagas esto puede que no tengas suficiente espacio, puede que tengas que tirar algo ” .

"Aquí están los tipos ordenados según el tamaño de su 'canasta':"

Tipo de conversión

"Solo un par de comentarios:

1. La canasta de char es del mismo tamaño que la de short, pero no puedes mover las cosas libremente de una a otra. Cuando mueve valores de short a char , los valores menores que 0 siempre se perderán. Cuando mueve valores de char a short, los valores superiores a 32.000 se perderán.

2. Cuando transforma números enteros en números fraccionarios, los dígitos menos significativos del número pueden descartarse. Sin embargo, esto es aceptable, ya que el propósito de un número fraccionario es almacenar un valor aproximado".

" Al realizar conversiones de reducción, debemos decirle explícitamente al compilador que no hemos cometido un error: estamos descartando parte del número a propósito. Usamos un operador de conversión ( es decir, el nombre del tipo entre paréntesis ) para hacer esto".

"Así es como debes asignar variables de diferentes tipos:"

codigo Java Descripción
byte a = 115;
int b = a;
Ampliación de la conversión primitiva. Todo es estupendo.
int c = 10000;
byte d = (byte) c;
Estrechamiento de la conversión primitiva . Debemos indicar explícitamente que los bytes adicionales deben descartarse.
int c = 10;
byte d = (byte) c;
Estrechamiento de la conversión primitiva. Debemos indicar explícitamente que los bytes adicionales deben descartarse, incluso si son iguales a 0.
float f = 10000;
long l = (long) (f * f);
float f2 = l;
long l2 = (long) f2;
Cuando se asigna a un flotante, se lleva a cabo una conversión primitiva de ampliación. Cuando se asigna un valor flotante a un valor largo, se produce una conversión primitiva de estrechamiento. Se requiere un operador de reparto.
double d = 1;
float f = (float) d;
long l = (long) f;
int i = (int) l;
short s = (short) i;
byte b = (byte) s;
Estrechamiento de conversiones en todas las operaciones de asignación excepto en la primera línea. Estas conversiones requieren que indiquemos explícitamente el tipo de conversión.

" Se debe colocar un operador de conversión antes de un número/variable cada vez que se descarte parte del número o cuando se produzca una conversión primitiva de reducción. El operador de conversión solo afecta al número/variable que le sigue directamente".

codigo Java Descripción
float f = 10000;
long l = (long) f * f;
Solo una de las dos variables se convierte en long: la multiplicación de long y float es igual a float.
float f = 10000;
long l = (long) (f * f);
Toda la expresión se convierte en un largo.

"Veo."