"Ciao, Amico!"

"Ciao, Eli!"

"Sono di buon umore oggi, quindi ho voglia di dirti qualcosa di interessante. Inizierò con come il sistema di tipi di Java tratta i tipi primitivi."

" In Java, ogni oggetto e ogni variabile ha il proprio tipo immutabile preimpostato. Il tipo di una variabile primitiva viene determinato quando il programma viene compilato, ma il tipo di un oggetto viene determinato quando viene creato. Il tipo di un oggetto e/o variabile appena creato rimane invariato nel corso della sua vita. Ecco un esempio:"

codice java Descrizione
int a = 11;
int b = 5;
int c = a / b; // c == 2
a / b– rappresenta la divisione intera. La risposta è due. Il resto dell'operazione di divisione viene semplicemente ignorato.
int a = 13;
int b = 5;
int d = a % b; // d == 3
dmemorizzerà il resto della divisione intera di aby b. Il resto è 3.

"Ci sono un paio di sfumature interessanti che devi ricordare."

"In primo luogo, una variabile di riferimento non punta sempre a un valore che ha lo stesso tipo che ha."

"In secondo luogo, quando le variabili con due tipi diversi interagiscono, devono prima essere convertite nello stesso tipo."

"E la divisione? Se dividiamo 1 per 3, otteniamo 0,333(3). Giusto?"

"No, non è giusto. Quando dividiamo due numeri interi, anche il risultato è un numero intero. Se dividi 5 per 3, la risposta sarà 1 con due come resto. E il resto sarà ignorato."

"Se dividiamo 1 per 3, otteniamo 0 (con promemoria 1, che verrà ignorato)."

"Ma cosa devo fare se voglio ottenere 0,333?"

"In Java, prima di eseguire la divisione, è meglio convertire un numero in un tipo a virgola mobile (frazionario) moltiplicandolo per un numero uno a virgola mobile (1.0)."

codice java Descrizione
int a = 1/3;
asarà 0
double d = 1/3;
 d sarà 0.0
double d = 1.0 / 3;
dsarà 0,333(3)
double d = 1 / 3.0;
dsarà 0,333(3)
int a = 5, b = 7;
double d = (a * 1.0) / b;
dsarà 0,7142857142857143

"Fatto."