logo

Typecasting în Java

Typecasting în Java este procesul de conversie a unui tip de date într-un alt tip de date folosind operatorul de casting. Când atribuiți o valoare de la un tip de date primitiv unui alt tip, aceasta este cunoscută sub numele de tip casting. Pentru a permite utilizarea unei variabile într-un mod specific, această metodă necesită instrucțiuni explicite compilatorului Java să trateze o variabilă de un tip de date ca o variabilă a unui alt tip de date.

Sintaxă:



 variableName = () value;>

Tipuri de tip turnare

Există două tipuri de tip Casting în java:

  • Tip lărgire Turnare
  • Turnare de tip îngust

Tip lărgire Turnare

Un tip de date inferior este transformat într-unul superior printr-un proces cunoscut sub numele de turnare de tip lărgire. Casting de tip implicit și casting down sunt câteva nume pentru aceasta. Se întâmplă în mod natural. Deoarece nu există nicio șansă de pierdere a datelor, este sigur. Turnarea tip lărgire are loc atunci când:

  • Tipul țintă trebuie să fie mai mare decât tipul sursă.
  • Ambele tipuri de date trebuie să fie compatibile între ele.

Sintaxă:



larger_data_type variable_name = smaller_data_type_variable;>


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);> >}> }>

>

>

Ieșire

Integer: 10 Long: 10 Double: 10.0>

Turnare de tip îngust

Procesul de reducere a unui tip de date mai mare într-unul mai mic este cunoscut sub numele de turnare de tip îngustare. Casting up sau tip explicit casting sunt alte nume pentru aceasta. Nu se întâmplă doar de la sine. Dacă nu facem asta în mod explicit, va apărea o eroare de compilare. Reducerea tipului de turnare este nesigură, deoarece pierderea datelor se poate întâmpla din cauza intervalului mai mic de valori permise pentru tipul de date inferior. Un operator de turnare asistă în procesul de turnare explicită.

concatenare de șiruri java

Sintaxă:

smaller_data_type variable_name = (smaller_data_type) larger_data_type_variable;>

Exemplu:

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);> >}> }>

>

>

Ieșire

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

Tipuri de casting explicit

În principal, există două tipuri de casting explicit:

  • Upcasting explicit
  • Downcasting explicit

Upcasting explicit

Upcasting este procesul de turnare a unui subtip într-un supertip în direcția ascendentă a arborelui moștenire. Când un obiect sub-clasă este referit de o variabilă de referință superclasă, un proces automat este declanșat fără niciun efort suplimentar.

Exemplu:

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();> >}> }>

>

>

Ieșire

The dog barks>

Downcasting explicit

Când un tip de subclasă se referă la un obiect al clasei părinte, procesul este denumit downcasting. Dacă se face manual, compilatorul emite o eroare ClassCastException la runtime. Se poate face doar folosind operatorul instanceof. Este posibilă doar doborarea unui obiect care a fost deja ridicat.

Exemplu:

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();> >}> }>

>

>

Ieșire

The animal is eating. The cat is meowing.>