Introduktion til Typekonvertering i Java

Når såvel variabler som, konstanter af forskellige typer er samlet i et udtryk, kan de ændres til en lignende type. Denne teknik til at transformere en enkelt foruddefineret type til en anden er kendt som typekonvertering i Java.

Skriv konvertering

Der er 2 forskellige typer konvertering, som vi bruger i programmeringssprog.

1. Implicit type-konvertering

Hvis typekonvertering udføres øjeblikkeligt gennem compiler uden at have programmerens involvering, kaldes typekonvertering som implicit typekonvertering. Compilatoren opmuntrer grundlæggende enhver operand mod datatypen for den største operand. Intet tab af data forekommer i hele datakonvertering. Ingen chance for at kaste undtagelse gennem konverteringen og er derfor kendt som typesikker. Konvertering af mindre størrelse for meget større antal kan være implicit konvertering. Transformation af data i heltalstypen, der skal flydes.

float i=0;
int j=10;
i=j;

// Dette kan være implicit transformation, da float kan være større end et heltal, derfor mangler data og heller ingen undtagelse.

2. Eksplicit type-konvertering

Den type konvertering, der kan håndhæves gennem programmereren, kaldes eksplicit type-konvertering. fundamentalt giver programmereren et udtryk for at blive af en bestemt type. Eksplicit type transformation kan kaldes typecasting. Tab af data forekommer muligvis eller ikke under datakonvertering. Derfor findes der en sandsynlighed for tab af detaljer. det kunne kaste en fejl, hvis det måske forsøgte at udføre uden typecasting. Transformation af et større antal til mindre numre kan være eksplicit konvertering.

float k=123.456
int i= (int) k

// dette kan være eksplicit konvertering såvel som (int) er typecast, operator. På dette tidspunkt lykkes vi måske at undslippe en undtagelse, men du kan finde det synlige tab af data. dvs. i = 123

// .456 kan droppes i konverteringsprocessen

Skriv konvertering i Java

Som andre programmeringssprog er der to typer konvertering i java:

Implicit type-konvertering

  • Dette er generelt, hvad vi kalder Bredere konvertering, og disse kan gøres automatisk, fordi vi flytter til en bredere datatyper. Så hvis vi har et 32-bit heltal og vi vil flytte til et 64-bit heltal, er det bredere. Så værdien kan flyttes sikkert, så disse kan gøres implicit. Og kompilatoren skal tage en beslutning om, hvordan man foretager disse konverteringer, og reglerne er ret ligetil.
  • Hvis vi har et udtryk med flere (blandede) heltalstørrelser i det, hvis vi har kort og langt, uanset hvor den største heltalstørrelse er, hvad tingene vil konvertere det til. Så hvis vi udfører en handling med en kort og en lang, vil den korte implicit blive kastet sammen.
  • Hvis vi udfører en operation med blandede flydepunktstørrelser, så vi har en flyder og en dobbelt, vil de altid gå til det dobbelte, fordi dobbelt er den største flydepunktstørrelse.
  • Og så hvis vi har en operation, der bruger blandede heltalstyper og flydende punkttyper, vil kompilatoren kaste til hvad det største flydende punkt i ligningen er. Så hvis vi foretager en operation med en lang og flydende, vil den lange blive kastet til flydende.
  • Hvis vi udfører en operation med en lang og en dobbelt, kastes den lange til en dobbelt.

Eksplicit type-konvertering

  • Vi udfører eksplicit i vores kode, når vi bruger denne cast-handling. Når vi gør det, tager vi ansvar for, hvad der sker som et resultat af den type konvertering. På grund af dette kan vi udføre både udvidet konvertering og smal. Så udvidelse går fra en 32-bit for at sige 64-bit, indsnævre, gå fra en 64-bit ned til en 32-bit. Vi skulle bare være opmærksomme på, at vi ved, hvad der potentielt kunne ske.
  • Hvis vi udfører en eksplicit rollebesætning fra et flydende punkt til et heltal, så flydende punkter kan have en brøkdel, kan heltal ikke, så enhver brøkdel vil blive tabt, når vi kaster den flydende ned til et heltal.
  • Du vil være forsigtig, når du udfører en indsnævring af konvertering. Hvis vi har et 64-bit heltal, har det evnen til at holde værdier, der er for store til at passe ind i et 32-bit heltal.
  • Så hvis vi caster den 64 bit til en 32-bit, vil programmet faktisk gøre det, men hvis værdien er for stor til at passe ind i en 32-bit, får du nogle ulige resultater af det. Så du vil være sikker på, at når du støber det ved at gøre en indsnævring, at du ved, at det, du laver, er sikkert.
  • Og det sidste er bare, at du vil være forsigtig, når du konverterer fra et heltal til et flydende punkt, fordi hvis du har et heltal med et stort antal betydelige cifre, på grund af den måde, flydepunktet er gemt, kan du miste noget af disse betydelige cifre.

Eksempler på typekonvertering

Eksempler på typekonvertering nævnt i detaljer:

Kode:

Vi har et simpelt program her, nogle erklæringer øverst, flyder, dobbelt, byte, kort og lang, og variablerne er hver navngivet for at hjælpe med at identificere, hvordan deres typer ligner float er floatVal,

Kode:

længe er langVal

Kode:

Og programmet udskriver bare en succesmeddelelse, hvis den kører.

Så lad os bare se, hvordan nogle af typen konverteringer kommer i spil her. Så lad os først og fremmest lad os bare gå videre og oprette en variabel. Vi har kort, og vi vil bare kalde det resultatet.

Faktisk lad os gå foran og kalde det resultat1. Og lad os bare gøre en simpel opgave. Og så først tildeler vi bare byteVal til den. Nu som vi forventer, hvis vi går videre og kører dette, så kør med succes.

Kode:

Produktion:

Vi ved, at det er en gyldig opgave, fordi en byte kan tildeles til en kort, fordi det er en udvidelse af konvertering.

Hvis vi dog tager denne byteVal, og vi gør det til en longVal i stedet, så nu er det faktisk en lang, hvis vi kører dette, får vi en fejlmeddelelse her, der siger inkompatibel type, mulig tab af konvertering fra lang til kort.

Kode:

Så hvad vi kan gøre her så er, at vi kan gøre en eksplicit rollebesætning. Vi vil bare komme kort foran dette. Så nu er det gyldigt, så vi kan køre det.

Kode:

Og selvfølgelig fungerer det. Fordi det lange ikke kunne gå på kort, fordi det var en indsnævring af konvertering.

Produktion:

Men ved at sætte den eksplicitte rollebesætning foran sig, er den nu gyldig. Hvis vi vil, kan vi sætte en rollebesetning være meget eksplicit og sige, at du ved, vi ved, selv om en byte-konvertering er lovlig, vi ønsker eksplicit at vise, at vi støber den ved at placere den korte rollebesætning derinde, vi kan gøre det, og det er helt lovligt.

Kode:

Produktion:

Så lad os nu se på et andet scenarie. Vi vil oprette en anden variabel, vi kalder result2 , og result2 er også en kort. Og hvad vi vil gøre her, er at vi bare tager vores byteVal, og vi ønsker at trække longVal fra. Nu ved vi, at det ikke er lovligt, fordi resultatet af udtrykket vil være størrelsen på det største heltal i det, som er længden.

Kode:

Så hvis vi kører dette, får vi en fejl med at sige, at det ikke er gyldigt at konvertere en lang til en kort.

Men lad os sige, at vi vil gå videre og holde dette resultat som et kort. Vi er nødt til at gøre en rollebesætning. Men vi ønsker at afgive denne gang er værdien af ​​hele resultatet her. Så hvad vi skal gøre, sætter den korte rollebesætning foran det her.

Læg den korte rollebesætning foran den her. Og indpak det hele i parentes. Og kør det.

Kode:

Det kører med succes.

Produktion:

Erklær nu en anden variabel kaldet resultat3, men erklær denne som lang. Så fik resultat 3, og hvad vi vil gøre her er, at vi tildeler vores longVal - floatVal. Så vi kører det, fejlen går tabt konvertering konvertering fra flyder til lang, fordi når vi har en heltal type og en hvilken som helst flytningspunkt type, resultatet vil være den flytende punkt type.

Kode:

Så lad os gå videre og konvertere vores resultat nu til en flyder. Så ved at gøre det til et flydende, bør vi være i stand til at gå foran og køre det. Og kør med succes.

Kode:

Produktion:

Men nu, hvis vi tager floatVal her, og vi konverterer dette til at være en doubleVal, og hvis vi prøver at køre dette, får vi fejlen, fordi den siger, at resultatet vil blive en dobbelt, fordi når du laver et heltal og et flydende punkt, det er størrelsen på det største flydende punkt i ligningen.

Kode:

Så lad os gå videre og gøre dette resultat til et dobbelt så nu kan vi køre det.

Kode:

Produktion:

Konklusion

1. Variabel indtastes stærkt i Java
2. Primitive typer

  • Heltallstyper, flydende punkttyper, karaktertype, boolsk type

3. Skriv konvertering

  • Vi er ofte nødt til at flytte mellem forskellige typer, fordi vores programmer, når de får mere kompleksitet, sandsynligvis vil involvere flere datatyper.
  • Compileren kan håndtere typekonverteringer, der udvides, og flytter fra en type til en anden, der kan indeholde større værdier,
  • Men du kan også bruge casting til eksplicit at udføre de typer konverteringer, som kompilatoren ikke kan udføre automatisk.

Anbefalede artikler

Dette er en guide til Type Konvertering i Java. Her diskuterer vi introduktionen, skriv konvertering i java som implicit og eksplicit sammen med eksemplerne, der bruger forskellige situationer. Du kan også se på de følgende artikler for at lære mere-

  1. Konstruktør i Java
  2. Sorterer i Java
  3. Konstruktør i Java
  4. JCheckBox i Java
  5. Kast vs kaster | Top 5 forskelle, du burde vide
  6. Sådan implementeres afkrydsningsfeltet i Bootstrap
  7. Konvertering i Java med eksempler

Kategori: