"En nu het meest interessante deel. Ik zal je vertellen over typeconversies. Variabelen kunnen hun type niet veranderen, maar er is een plaats waar je typen kunt converteren. Die plaats is een toewijzingsoperatie. "

"Je kunt variabelen van verschillende typen aan elkaar toewijzen. Daarbij wordt de waarde van de ene variabele (van een bepaald type) omgezet in een waarde van het andere type en toegewezen aan de andere variabele. "

"We kunnen twee soorten conversies aanwijzen: verbredende primitieve conversies en versmallende primitieve conversies. Verbreding is als het verplaatsen van dingen van een kleine mand naar een grote. De procedure is onopvallend en pijnloos. Versmallen is analoog aan dingen uit een grote mand halen en ze in een kleinere te stoppen. Als je dit doet, heb je misschien niet genoeg ruimte; misschien moet je iets weggooien. "

"Hier zijn de soorten gesorteerd volgens hun 'mand'-formaat:"

Type conversie

"Even een paar opmerkingen:

1. De mand van char is even groot als die van short, maar je kunt dingen niet vrij van de ene naar de andere verplaatsen. Wanneer u waarden van short naar char verplaatst , gaan waarden die kleiner zijn dan 0 altijd verloren. Wanneer u waarden van char naar short verplaatst, gaan waarden groter dan 32.000 verloren.

2. Wanneer u gehele getallen omzet in breukgetallen, kunnen de minst significante cijfers van het getal worden weggegooid. Dit is echter acceptabel, aangezien het doel van een gebroken getal is om een ​​geschatte waarde op te slaan."

" Bij het uitvoeren van vernauwende conversies moeten we de compiler expliciet vertellen dat we geen fout hebben gemaakt: we verwijderen met opzet een deel van het nummer. We gebruiken een cast-operator ( dwz de typenaam tussen haakjes ) om dit te doen."

"Zo moet u variabelen van verschillende typen toewijzen:"

Java-code Beschrijving
byte a = 115;
int b = a;
Verbreding primitieve conversie. Alles is geweldig.
int c = 10000;
byte d = (byte) c;
Vernauwende primitieve conversie . We moeten expliciet vermelden dat de extra bytes moeten worden weggegooid.
int c = 10;
byte d = (byte) c;
Vernauwende primitieve conversie. We moeten expliciet aangeven dat de extra bytes moeten worden weggegooid, zelfs als ze gelijk zijn aan 0.
float f = 10000;
long l = (long) (f * f);
float f2 = l;
long l2 = (long) f2;
Bij het toewijzen aan een float vindt een verbredende primitieve conversie plaats. Bij het toekennen van een float aan een long vindt een vernauwende primitieve conversie plaats. Een cast-operator is vereist.
double d = 1;
float f = (float) d;
long l = (long) f;
int i = (int) l;
short s = (short) i;
byte b = (byte) s;
Beperkende conversies in alle toewijzingsbewerkingen behalve de eerste regel. Deze conversies vereisen dat we expliciet de typeconversie aangeven.

" Een cast-operator moet altijd voor een getal/variabele worden geplaatst wanneer een deel van het getal wordt weggegooid of wanneer een vernauwende primitieve conversie plaatsvindt. De cast-operator heeft alleen invloed op het getal/de variabele die er direct op volgt."

Java-code Beschrijving
float f = 10000;
long l = (long) f * f;
Slechts één van de twee variabelen wordt naar een long gegoten: vermenigvuldiging van een long en een float is gelijk aan een float.
float f = 10000;
long l = (long) (f * f);
De hele uitdrukking is lang.

"Ik zie."