logo

Typecasting i Java

Typecasting i Java er processen med at konvertere en datatype til en anden datatype ved hjælp af casting-operatøren. Når du tildeler en værdi fra en primitiv datatype til en anden type, er dette kendt som typecasting. For at muliggøre brugen af ​​en variabel på en specifik måde, kræver denne metode, at Java-kompileren udtrykkeligt instrueres i at behandle en variabel af én datatype som en variabel af en anden datatype.

Syntaks:



 variableName = () value;>

Typer af Typestøbning

Der er to typer Type Casting i java:

  • Udvidelsestype Støbning
  • Smal type støbning

Udvidelsestype Støbning

En lavere datatype omdannes til en højere ved en proces kendt som støbning af udvidende type. Implicit type støbning og casting ned er nogle navne for det. Det forekommer naturligt. Da der ikke er nogen chance for tab af data, er det sikkert. Udvidelsestype støbning forekommer, når:

  • Måltypen skal være større end kildetypen.
  • Begge datatyper skal være kompatible med hinanden.

Syntaks:



larger_data_type variable_name = smaller_data_type_variable;>


Java

hvordan man opdaterer i java






// Java program to demonstrate Widening TypeCasting> import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >int> i =>10>;> > >// Wideing TypeCasting (Automatic Casting)> >// from int to long> >long> l = i;> > >// Wideing TypeCasting (Automatic Casting)> >// from int to double> >double> d = i;> > >System.out.println(>'Integer: '> + i);> >System.out.println(>'Long: '> + l);> >System.out.println(>'Double: '> + d);> >}> }>

>

>

Produktion

Integer: 10 Long: 10 Double: 10.0>

Smal Type Støbning

Processen med at reducere en større datatype til en mindre er kendt som indsnævring af støbning. Støbning eller eksplicit type støbning er andre navne for det. Det kommer ikke bare af sig selv. Hvis vi ikke eksplicit gør det, vil der opstå en kompileringsfejl. Indsnævring af casting er usikker, fordi datatab kan ske på grund af den lavere datatypes mindre række tilladte værdier. En cast-operatør hjælper i processen med eksplicit casting.

Syntaks:

smaller_data_type variable_name = (smaller_data_type) larger_data_type_variable;>

Eksempel:

Java




// Java Program to demonstrate Narrow type casting> import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >double> i =>100.245>;> > >// Narrowing Type Casting> >short> j = (>short>)i;> >int> k = (>int>)i;> > >System.out.println(>'Original Value before Casting'> >+ i);> >System.out.println(>'After Type Casting to short '> >+ j);> >System.out.println(>'After Type Casting to int '> >+ k);> >}> }>

>

>

Produktion

Original Value before Casting100.245 After Type Casting to short 100 After Type Casting to int 100>

Typer af eksplicit casting

Der er hovedsageligt to typer eksplicit casting:

  • Eksplicit Upcasting
  • Eksplicit nedkastning

Eksplicit Upcasting

Upcasting er processen med at støbe en undertype til en supertype i arvetræets opadgående retning. Når et underklasseobjekt refereres af en superklassereferencevariabel, udløses en automatisk proces uden yderligere indsats.

Eksempel:

Java




// Java Program to demonstrate Explicit Upcasting> import> java.io.*;> > class> Animal {> >public> void> makeSound()> >{> >System.out.println(>'The animal makes a sound'>);> >}> }> > class> Dog>extends> Animal {> >public> void> makeSound()> >{> >System.out.println(>'The dog barks'>);> >}> > >public> void> fetch()> >{> >System.out.println(>'The dog fetches a ball'>);> >}> }> class> GFG {> >public> static> void> main(String[] args)> >{>// Upcasting> >Animal animal =>new> Dog();> >// Calls the overridden method in Dog class> >animal.makeSound();> >// This would give a compile error as fetch() is not> >// a method in Animal class> >// animal.fetch();> >}> }>

>

>

søgealgoritmer
Produktion

The dog barks>

Eksplicit nedkastning

Når en underklassetype refererer til et objekt i den overordnede klasse, omtales processen som downcasting. Hvis det gøres manuelt, udsender compileren en runtime ClassCastException-fejl. Det kan kun gøres ved at bruge instanceof-operatoren. Kun nedkastning af et objekt, der allerede er blevet opkastet, er muligt.

Eksempel:

Java




// Java Program to demonstrate Explicit downcasting> import> java.io.*;> class> Animal {> >public> void> eat()> >{> >System.out.println(>'The animal is eating.'>);> >}> }> > class> Cat>extends> Animal {> >public> void> meow()> >{> >System.out.println(>'The cat is meowing.'>);> >}> }> > class> GFG {> >public> static> void> main(String[] args)> >{> >Animal animal =>new> Cat();> >animal.eat();> > >// Explicit downcasting> >Cat cat = (Cat)animal;> >cat.meow();> >}> }>

>

>

Produktion

The animal is eating. The cat is meowing.>