Il cast serve per convertire un valore da un tipo ad un altro tipo. A livello di tipi primitivi, il cast cambia proprio il numero di bit del valore. Se fai un down-cast cioè da un tipo più grande ad uno più piccolo, perdi dei bit, quindi il valore può risultare sballato e completamente alterato (può perdere anche il segno oltre che la grandezza e/o precisione). Se fai un up-cast cioè da un tipo più piccolo ad uno più grande, non ci sono problemi.
A livello di tipi reference, il cast (up o down) non cambia nulla a livello di bit. Cambia solo la "visione" che si ha di un certo oggetto.
La (binary o unary) numeric promotion si applica con gli operatori. Quando es. sommi un byte e uno short, cosa deve succedere? Deve esserci un unico tipo finale e ci sono quindi delle regole per determinarlo. In questo caso, byte + short, entrambi i valori vengono portati ad int per fare la somma e il risultato è quindi un int.
Te le dico in modo buono, ti ci vorrà ancora un bel po' prima di arrivare a quell'obiettivo. Continua a studiare Java, buon studio! E se hai dubbi, continua pure a chiedere.![]()