"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.

" 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."