Aanbevolen, 2024

Editor'S Choice

Verschil tussen Type Casting en Type Conversion

De twee termen "type-casting" en "type-conversie" doen zich voor wanneer het ene gegevenstype naar het andere moet worden geconverteerd. Wanneer de twee typen compatibel zijn met elkaar, wordt de conversie van het ene type naar het andere automatisch uitgevoerd door de compiler. Er is echter een basisverschil tussen het type conversie en het type casting, dwz het type conversie wordt "automatisch" uitgevoerd door de compiler, terwijl het type casting "expliciet gedaan" wordt door de programmeur. Laten we het verschil bespreken tussen typen en conversie met behulp van een vergelijkingsgrafiek.

Vergelijkingstabel:

Basis voor vergelijkingTyp CastingType conversie
BetekenisEén gegevenstype wordt door de gebruiker aan een ander gegevenstype toegewezen met behulp van een cast-operator en wordt vervolgens "Type Casting" genoemd.Conversie van een gegevenstype naar een ander automatisch door de compiler wordt "Type Conversie" genoemd.
ToegepastType-casting kan ook worden toegepast op twee 'incompatibele' gegevenstypen.Typeconversie kan alleen worden geïmplementeerd als twee gegevenstypen 'compatibel' zijn.
operatorVoor het gieten van een gegevenstype naar een ander, is een casting-operator '()' vereist.Geen operator vereist.
Grootte van gegevenstypenHet type bestemming kan kleiner zijn dan het brontype.Hier moet het bestemmingstype groter zijn dan het brontype.
GeïmplementeerdHet wordt gedaan tijdens het ontwerpen van het programma.Dit wordt expliciet gedaan tijdens het compileren.
Conversie type
Versmalling van conversie.Verbreding conversie.
Voorbeeldint a;
byte b;
...
...
b = (byte) a;
int a = 3;
float b;
b = a; // waarde in b = 3.000.

Definitie van Type Casting

Type casting kan worden gedefinieerd als, gieten van een gegevenstype naar een ander gegevenstype, door de programmeur, op het moment van het programmaontwerp. Een automatische conversie van het ene gegevenstype naar het andere is niet altijd mogelijk. Het kan de voorwaarde zijn dat het 'bestemmingstype' kleiner is dan het 'brontype', dus moet de programmeur expliciet het grotere gegevenstype naar een kleiner gegevenstype casten met behulp van de castingoperator '()'. Aangezien het grotere gegevenstype is gemoduleerd naar het kleinere gegevenstype, wordt dit ook 'versmallingsconversie' genoemd.

Verklaring:

 destination_type = (target_type) variabele / waarde // target type is een type waarin u het brontype wilt converteren, het is altijd het bestemmingstype. 

Laten we het begrijpen met een voorbeeld. U wilt het gegevenstype 'int' in 'byte' converteren, nu 'byte' kleiner is dan 'int', is typeconversie niet toegestaan. Hier moesten we impliciet 'int' in 'byte' converteren door casting operator '()' te gebruiken. Als 'int' groter is dan 'byte', wordt de grootte van 'int' gereduceerd tot 'int mod byte' bereik.

 int a; byte b; ... ... b = (byte) a; 

Wanneer de 'float' wordt geconverteerd naar 'int', wordt de grootte van de float afgekapt, omdat 'int' de fractionele waarde niet opslaat. Als de grootte van het bestemmingstype te klein is om in het brontype te passen, dan is het brontype modulo-bestemmingstype 'bereik'. Casten kan ook worden toegepast wanneer datatypen compatibel zijn. Het is een goede gewoonte om type-casting te gebruiken waar type conversie nodig is.

Definitie van typeconversie

Typeconversie is de automatische conversie van het ene gegevenstype naar het andere wanneer dat nodig is, expliciet door de compiler. Er zijn echter twee voorwaarden waaraan moet zijn voldaan voordat typeconversie wordt uitgevoerd.

  • Bron en doeltype moeten compatibel zijn.
  • Het bestemmingstype moet groter zijn dan het brontype.

Aan deze twee voorwaarden moet worden voldaan om typeconversie te bereiken, en dit soort conversie wordt 'verbreding van conversie' genoemd, omdat een kleiner type wordt omgezet naar een groter type, waarbij verbreding van het type optreedt. Voor deze verbredingsconversie zijn numerieke typen als 'int', 'float' compatibel met elkaar, terwijl numeriek naar char en boolean of char naar boolean ook niet compatibel is.

Dit voorbeeld zal dit beter weergeven

 int a = 3; float b; b = a; // waarde in b = 3.000. 

Hier wordt 'int' geconverteerd naar 'float', wat groter is dan 'int', dus verbreding van het brontype treedt op. Hier is geen casting-operator vereist, omdat de compiler dit expliciet zal doen.

Belangrijkste verschillen tussen typengieten en conversie

  1. Het basisverschil dat type-casting van typeconversie onderscheidt, is dat type-casting de conversie van het ene type naar het andere is, uitgevoerd door de programmeur. Aan de andere kant is de typeconversie conversie van het ene type naar het andere, uitgevoerd door de compiler tijdens het compileren.
  2. Type casting kan worden toegepast op de datatypes die mogelijk niet compatibel zijn met elkaar, maar typeconversie kan alleen worden toegepast op de datatypes die compatibel zijn met elkaar.
  3. Voor de conversie van het ene type naar het andere bij het casten van het type is de castingoperator "()" vereist, terwijl voor de conversie van het ene gegevenstype naar het andere bij een typeconversie geen operator vereist is.
  4. Bij het converteren van het ene gegevenstype naar een ander bij het typen van het type, kan het bestemmingstype groter of kleiner zijn dan het brontype. Aan de andere kant moet het bestemmingstype groter zijn dan het brontype in typeconversie.
  5. De conversie van het ene type naar het andere type gebeurt tijdens het coderen in het type casting, terwijl bij de conversie van het type de conversie van het ene type naar het andere expliciet wordt uitgevoerd tijdens het compileren.
  6. Type-casting wordt versmallingsconversie genoemd omdat hier het bestemmingstype kleiner kan zijn dan het brontype, terwijl typeconversie verbredingsconversie wordt genoemd, omdat hier het bestemmingstype groter moet zijn dan het brontype.

Conclusie:

Geconcludeerd kan worden dat typeconversie en type casting beide de taak uitvoeren van het converteren van het ene gegevenstype naar het andere, maar in die zin dat het typen van het type wordt gedaan door de programmeur, met behulp van cast operator '()' en het type conversie wordt gedaan door de compiler en er wordt geen operator gebruikt.

Top