"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:"
"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 |
---|---|
|
Udvidelse af primitiv konvertering. Alt er fantastisk. |
|
Indsnævring af primitiv konvertering . Vi skal udtrykkeligt angive, at de ekstra bytes skal kasseres. |
|
Indsnævring af primitiv konvertering. Vi skal udtrykkeligt sige, at de ekstra bytes skal kasseres, selvom de er lig med 0. |
|
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. |
|
Indsnævring af konverteringer i alle tildelingsoperationer undtagen den første linje. Disse konverteringer kræver, at vi udtrykkeligt angiver typekonverteringen. |
" 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 |
---|---|
|
Kun én af de to variable er støbt til en lang: multiplikation af en lang og en float er lig med en float. |
|
Hele udtrykket er støbt til en lang. |
"Jeg ser."
GO TO FULL VERSION