"Og nu til den mest interessante del. Jeg vil fortælle dig om typekonverteringer. Variabler kan ikke ændre deres typer, men der er et sted, hvor du kan konvertere typer. Det sted er en tildelingsoperation. "

"Du kan tildele variabler af forskellige typer til hinanden. Derved konverteres værdien af ​​en variabel (af en bestemt type) til en værdi af den anden type og tildeles den anden variabel. "

"Vi kan pege på to typer konverteringer: udvidelse af primitive konverteringer og indsnævring af primitive konverteringer. Udvidelse er som at flytte ting fra en lille kurv til en stor. Proceduren er umærkelig og smertefri. Indsnævring er analog med at tage ting ud af en stor kurv. og læg dem i en mindre. Når du gør dette, har du muligvis ikke plads nok; du skal muligvis smide noget ud. "

"Her er typerne sorteret efter deres 'kurv' størrelse:"

Typekonvertering

"Bare et par kommentarer:

1. chars kurv har samme størrelse som shorts, men du kan ikke flytte tingene frit fra den ene til den anden. Når du flytter værdier fra kort til tegn , vil værdier, der er mindre end 0, altid gå tabt. Når du flytter værdier fra char til short, vil værdier større end 32.000 gå tabt.

2. Når du omdanner heltal til brøktal, kan de mindst betydende cifre i tallet blive smidt ud. Dette er dog acceptabelt, da formålet med et brøktal er at gemme en omtrentlig værdi."

" Når vi udfører indsnævre konverteringer, skal vi udtrykkeligt fortælle compileren, at vi ikke har lavet en fejl: vi kasserer en del af nummeret med vilje. Vi bruger en cast-operator ( dvs. typenavnet i parentes ) til at gøre dette."

"Sådan skal du tildele variabler af forskellige typer:"

Java kode Beskrivelse
byte a = 115;
int b = a;
Udvidelse af primitiv konvertering. Alt er fantastisk.
int c = 10000;
byte d = (byte) c;
Indsnævring af primitiv konvertering . Vi skal udtrykkeligt angive, at de ekstra bytes skal kasseres.
int c = 10;
byte d = (byte) c;
Indsnævring af primitiv konvertering. Vi skal udtrykkeligt sige, at de ekstra bytes skal kasseres, selvom de er lig med 0.
float f = 10000;
long l = (long) (f * f);
float f2 = l;
long l2 = (long) f2;
Når der tildeles til en float, finder en udvidende primitiv konvertering sted. Når man tildeler en float til en lang, finder en indsnævrende primitiv konvertering sted. En cast-operatør er påkrævet.
double d = 1;
float f = (float) d;
long l = (long) f;
int i = (int) l;
short s = (short) i;
byte b = (byte) s;
Indsnævring af konverteringer i alle tildelingsoperationer undtagen den første linje. Disse konverteringer kræver, at vi udtrykkeligt angiver typekonverteringen.
3
Opgave
Java Syntax,  niveaulektie
Låst
Code entry
Sometimes you don't need to think, you just need to hammer it out! As paradoxical as it may seem, sometimes your fingers will "remember" better than your conscious mind. That's why while training at the secret CodeGym center you will sometimes encounter tasks that require you to enter code. By entering code, you get used to the syntax and earn a little dark matter. What's more, you combat laziness.

" En rollebesætningsoperator skal sættes før et tal/variabel, når som helst en del af nummeret vil blive kasseret, eller når der opstår en indsnævrende primitiv konvertering. Cast-operatoren påvirker kun det tal/variabel, der følger direkte efter den."

Java kode Beskrivelse
float f = 10000;
long l = (long) f * f;
Kun én af de to variable er støbt til en lang: multiplikation af en lang og en float er lig med en float.
float f = 10000;
long l = (long) (f * f);
Hele udtrykket er støbt til en lang.

"Jeg ser."