Sammenligningstabel:
Grundlag for sammenligning | Type Casting | Type Konvertering |
---|---|---|
Betyder | En datatype er tildelt en anden af brugeren ved hjælp af en cast-operatør, så kaldes den "Type Casting". | Konvertering af en datatype til en anden automatisk kaldes "Typekonvertering". |
Anvendt | Type støbning kan også anvendes på to "inkompatible" datatyper. | Typekonvertering kan kun implementeres, når to datatyper er "kompatible". |
Operatør | For at caste en datatype til en anden, kræves en casting operator '()'. | Ingen operatør kræves. |
Størrelse af datatyper | Destinations type kan være mindre end kilde type. | Her skal destinationstypen være større end kildetype. |
implementeret | Det gøres under programdesign. | Det gøres eksplicit under kompilering. |
Konverteringstype | Narrowing konvertering. | Forøgelse af konvertering. |
Eksempel | int a; byte b; ... ... b = (byte) a; | int a = 3; float b; b = a; // værdi i b = 3.000. |
Definition af Type Casting
Type støbning kan defineres som støbning af en datatype til en anden datatype, af programmøren, på tidspunktet for programdesign. Aa automatisk konvertering af en datatype til en anden, er ikke muligt hele tiden. Det kan være en betingelse, at "destinationstypen" er mindre end "source type", så programmøren skal eksplicit afgive den større datatype til mindre datatype ved hjælp af støbningsoperatøren '()'. Da den større datatype moduleres til den mindre datatype, kaldes den også 'indsnævringskonvertering'.
destination_type = (target_type) variabel / værdi // måltype er en type, hvor du vil konvertere kildetypen, det er altid destinationstypen.
Lad os forstå det med et eksempel. Du vil konvertere datatypen 'int' til 'byte', nu, da 'byte' er mindre end 'int', er konvertering af typen ikke tilladt. Her måtte vi implicit konvertere 'int' til 'byte' ved at bruge casting operator '()'. Da 'int' er større end 'byte', vil størrelsen af 'int' blive reduceret til 'int mod byte'-området.
int a; byte b; ... ... b = (byte) a;
Når "float" konverteres til "int", bliver floatens størrelse afkortet, da 'int' ikke opbevarer brøkværdien. Hvis størrelsen på destinationstypen er for lille, for at kildetypen kan passe ind, er kildetype modulo destination type 'range'. Støbning kan også anvendes, når datatyper er kompatible, det er god praksis at bruge støbegods, hvor der er brug for typekonvertering.
Definition af Type Konvertering
Type konvertering er den automatiske konvertering af en datatype til en anden, når det kræves, udført eksplicit af kompilatoren. Men der er to betingelser, der skal opfyldes før typekonvertering.
- Kilde og destinationstype skal være kompatibel.
- Destinations type skal være større end kilde type.
Disse to betingelser bør tilfredsstille for at opnå konvertering af typen, og denne form for omdannelse kaldes "udvidet konvertering", da en mindre type omdannes til større type, forekommer udvidelsen af typen. Til denne udvidede konvertering er numeriske typer som 'int', 'float' kompatible med hinanden, mens numeriske til char og boolean eller char til boolean også er ikke kompatibel.
Dette eksempel giver et bedre billede af dette
int a = 3; float b; b = a; // værdi i b = 3.000.
Her omdannes 'int' til 'float', som er større end 'int', så der sker en udvidelse af kildetype. Her er ingen casting operatør påkrævet, da kompilatoren vil gøre det eksplicit.
Nøgleforskelle mellem Type Casting og Conversion
- Den grundlæggende forskel, der adskiller typestøbning fra typekonvertering, er, at typen af støbning er omdannelse af en type til en anden, udført af programmereren. På den anden side er typekonvertering konverteringen af en type til en anden, udført af kompilatoren under kompilering.
- Type støbning kan anvendes til datatyperne, som muligvis ikke er kompatible med hinanden, men type konvertering kan kun anvendes til datatyper, som er kompatible med hinanden.
- Konvertering af en type til en anden i typen støbning kræver støbningsoperatøren "()", mens konverteringen af en datatype til en anden i typeomdannelse ikke kræver nogen operatør.
- Mens konvertering af en datatype til en anden i typen støbning, kan destinationstypen være større eller mindre end kildetypen. På den anden side skal destinationstypen være større end kildetypen i typekonvertering.
- Konvertering af en type til en anden type udføres under kodning i typeafstøbning, mens konvertering af en type til en anden i typekonvertering sker eksplicit under kompilering.
- Typestøbning kaldes indsnævringskonvertering, fordi destinationstypen her kan være mindre end kildetype, mens typekonvertering kaldes udvidelse af konvertering, fordi destinationstypen her skal være større end kildetypen.
Konklusion:
Det kan konkluderes, at typen af konvertering og type støbning både udfører opgaven med at omdanne en datatype til en anden, men adskiller sig på den måde, at typen støbning udføres af programmøren, ved hjælp af cast operator '()' og typekonvertering foretages af compiler, og det bruger ikke nogen operatør.