"Og nå til den mest interessante delen. Jeg skal fortelle deg om typekonverteringer. Variabler kan ikke endre typen, men det er et sted du kan konvertere typer. Det stedet er en tilordningsoperasjon. "

"Du kan tilordne variabler av forskjellige typer til hverandre. Ved å gjøre dette konverteres verdien av en variabel (av en bestemt type) til en verdi av den andre typen og tilordnes den andre variabelen. "

"Vi kan peke på to typer konverteringer: utvidende primitive konverteringer og innsnevring av primitive konverteringer. Utvidelse er som å flytte ting fra en liten kurv til en stor. Prosedyren er umerkelig og smertefri. Innsnevring er analog med å ta ting ut av en stor kurv. og legge dem i en mindre. Når du gjør dette, har du kanskje ikke nok plass; du må kanskje kaste ut noe. »

"Her er typene sortert etter "kurv"-størrelsen deres:"

Typekonvertering

"Bare et par kommentarer:

1. char sin kurv har samme størrelse som shorts, men du kan ikke flytte ting fritt fra den ene til den andre. Når du flytter verdier fra kort til tegn , vil verdier som er mindre enn 0 alltid gå tapt. Når du flytter verdier fra char til short, vil verdier større enn 32 000 gå tapt.

2. Når du transformerer heltall til brøktall, kan de minst signifikante sifrene i tallet bli kastet ut. Dette er imidlertid akseptabelt, siden formålet med et brøktall er å lagre en omtrentlig verdi."

" Når vi utfører innsnevringskonverteringer, må vi eksplisitt fortelle kompilatoren at vi ikke har gjort en feil: vi forkaster en del av nummeret med vilje. Vi bruker en cast-operator ( dvs. typenavnet i parentes ) for å gjøre dette."

"Slik bør du tilordne variabler av forskjellige typer:"

Java-kode Beskrivelse
byte a = 115;
int b = a;
Utvidelse av primitiv konvertering. Alt er flott.
int c = 10000;
byte d = (byte) c;
Innsnevring av primitiv konvertering . Vi må uttrykkelig si at de ekstra bytene skal forkastes.
int c = 10;
byte d = (byte) c;
Innsnevring av primitiv konvertering. Vi må eksplisitt si at de ekstra bytene skal forkastes, selv om de er lik 0.
float f = 10000;
long l = (long) (f * f);
float f2 = l;
long l2 = (long) f2;
Når du tilordner til en flottør, finner en utvidende primitiv konvertering sted. Når du tilordner en flyte til en lang, finner en innsnevrende primitiv konvertering sted. En rollebesetningsoperatør kreves.
double d = 1;
float f = (float) d;
long l = (long) f;
int i = (int) l;
short s = (short) i;
byte b = (byte) s;
Begrensende konverteringer i alle tildelingsoperasjoner bortsett fra den første linjen. Disse konverteringene krever at vi eksplisitt angir typen konvertering.

" En cast-operator må settes foran et tall/variabel når som helst en del av nummeret vil bli forkastet eller når en innsnevrende primitiv konvertering oppstår. Cast-operatoren påvirker kun tallet/variabelen som følger direkte."

Java-kode Beskrivelse
float f = 10000;
long l = (long) f * f;
Bare én av de to variablene er støpt til en lang: multiplikasjon av en lang og en float er lik en float.
float f = 10000;
long l = (long) (f * f);
Hele uttrykket er støpt til en lang.

"Jeg skjønner."