"E ora per la parte più interessante. Ti parlerò delle conversioni di tipo. Le variabili non possono cambiare i loro tipi, ma c'è un posto dove puoi convertire i tipi. Quel posto è un'operazione di assegnazione . "

"È possibile assegnare tra loro variabili di tipi diversi. In tal modo, il valore di una variabile (di un determinato tipo) viene convertito in un valore dell'altro tipo e assegnato all'altra variabile. "

"Possiamo indicare due tipi di conversioni: l'ampliamento delle conversioni primitive e il restringimento delle conversioni primitive. L'allargamento è come spostare le cose da un piccolo cesto a uno grande. La procedura è insignificante e indolore. Restringere è analogo a togliere le cose da un grande cesto e metterli in uno più piccolo. Quando lo fai potresti non avere abbastanza spazio; potresti dover buttare via qualcosa " .

"Ecco i tipi ordinati in base alla dimensione del 'cestino':"

Conversione del tipo

"Solo un paio di commenti:

1. Il cestino di char ha le stesse dimensioni di quello di short, ma non puoi spostare le cose liberamente dall'una all'altra. Quando sposti i valori da short a char , i valori inferiori a 0 andranno sempre persi. Quando sposti i valori da char a short, i valori superiori a 32.000 andranno persi.

2. Quando si trasformano numeri interi in numeri frazionari, le cifre meno significative del numero potrebbero essere scartate. Tuttavia, questo è accettabile, poiché lo scopo di un numero frazionario è memorizzare un valore approssimativo."

" Quando si eseguono conversioni di restringimento, dobbiamo dire esplicitamente al compilatore che non abbiamo commesso un errore: stiamo scartando di proposito una parte del numero. Usiamo un operatore cast ( cioè il nome del tipo tra parentesi ) per farlo."

"Ecco come dovresti assegnare variabili di diversi tipi:"

codice java Descrizione
byte a = 115;
int b = a;
Ampliamento della conversione primitiva. È tutto fantastico.
int c = 10000;
byte d = (byte) c;
Conversione primitiva restringente . Dobbiamo dichiarare esplicitamente che i byte extra dovrebbero essere scartati.
int c = 10;
byte d = (byte) c;
Conversione primitiva restringente. Dobbiamo dichiarare esplicitamente che i byte extra devono essere scartati, anche se sono uguali a 0.
float f = 10000;
long l = (long) (f * f);
float f2 = l;
long l2 = (long) f2;
Quando si assegna a un float, ha luogo una conversione primitiva di ampliamento. Quando si assegna un float a un long, ha luogo una conversione primitiva di restringimento. È richiesto un operatore di cast.
double d = 1;
float f = (float) d;
long l = (long) f;
int i = (int) l;
short s = (short) i;
byte b = (byte) s;
Restringimento delle conversioni in tutte le operazioni di assegnazione ad eccezione della prima riga. Queste conversioni richiedono che indichiamo esplicitamente la conversione del tipo.
3
Compito
Java Syntax,  livello 10lezione 3
Bloccato
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.

" Un operatore cast deve essere messo prima di un numero/variabile ogni volta che una parte del numero verrà scartata o quando si verifica una conversione primitiva di restringimento. L'operatore cast influisce solo sul numero/variabile che lo segue direttamente."

codice java Descrizione
float f = 10000;
long l = (long) f * f;
Solo una delle due variabili viene convertita in long: la moltiplicazione di long e float equivale a float.
float f = 10000;
long l = (long) (f * f);
L'intera espressione viene lanciata su un lungo.

"Vedo."