Buongiorno a tutti,
mi chiamo Federico. Sono un principiante nell'ambito della programmazione, tanto che ho appena iniziato a studiare Java (8), tramite un buon libro/manuale che consiglio.
Tale libro è stato scritto dall'autore Claudio De Sio Cesari.
A parte ciò, dopo aver iniziato a studiare i "TIPI DI DATI PRIMITIVI", e più precisamente quelli INTERI (byte, short, int, long) ho riscontrato delle difficoltà nel capire i concetti di Cast/Casting e Promotion.
Nell'esempio riportato:
byte b = 50;
b = b * 2;
La seconda istruzione da un errore in compilazione, poiché il compilatore non esegue l'operazione di moltiplicazione, ma promuove entrambi gli operandi ad "int" e quindi un "int" non può essere immagazzinato in "b" che è un "byte". Fino a qui ho capito.
Come dice il libro:
(50 * 2) è immagazzinabile in un "byte", e per fare ciò si utilizza il Cast/Casting che forza una certa quantità ad essere immagazzinata in un certo tipo di dato. Per farlo:
b = (byte) (b * 2);
Invece, se noi scrivessimo:
b = (byte) 128;
Non ci sarebbero errori in compilazione, ma la variabile "b" avrà valore " - 128 " e non " 128 ".
Questo è il problema. Non capisco perché si ottiene quel valore.
Qualcuno, gentilmente, mi potrebbe aiutare?
Grazie in anticipo, e buona giornata.![]()