Il typecasting in Java è il processo di conversione di un tipo di dati in un altro tipo di dati utilizzando l'operatore di casting. Quando assegni un valore da un tipo di dati primitivo a un altro tipo, questo è noto come cast di tipo. Per abilitare l'uso di una variabile in un modo specifico, questo metodo richiede di istruire esplicitamente il compilatore Java a trattare una variabile di un tipo di dati come una variabile di un altro tipo di dati.
Sintassi:
variableName = () value;>
Tipi di fusione del tipo
Esistono due tipi di Type Casting in Java:
- Fusione di tipo allargato
- Colata di tipo stretto
Fusione di tipo allargato
Un tipo di dati inferiore viene trasformato in uno superiore mediante un processo noto come casting del tipo di ampliamento. Casting di tipo implicito e castdown sono alcuni dei nomi per questo. Si verifica naturalmente. Poiché non vi è alcuna possibilità di perdita di dati, è sicuro. La fusione del tipo allargato avviene quando:
- Il tipo di destinazione deve essere più grande del tipo di origine.
- Entrambi i tipi di dati devono essere compatibili tra loro.
Sintassi:
larger_data_type variable_name = smaller_data_type_variable;>
Giava
// 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);> >}> }> |
>
>Produzione
Integer: 10 Long: 10 Double: 10.0>
Colata di tipo stretto
Il processo di ridimensionamento di un tipo di dati più grande in uno più piccolo è noto come casting di tipo restringente. Casting o casting di tipo esplicito sono altri nomi per questo. Non succede da solo. Se non lo facciamo esplicitamente, si verificherà un errore in fase di compilazione. Restringere il cast del tipo non è sicuro perché potrebbe verificarsi una perdita di dati a causa del range più ristretto di valori consentiti del tipo di dati inferiore. Un operatore di cast assiste nel processo di casting esplicito.
Sintassi:
smaller_data_type variable_name = (smaller_data_type) larger_data_type_variable;>
Esempio:
Giava
// 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);> >}> }> |
stringa in numero intero
>
>Produzione
Original Value before Casting100.245 After Type Casting to short 100 After Type Casting to int 100>
Tipi di casting esplicito
Principalmente esistono due tipologie di Casting Esplicito:
- Upcasting esplicito
- Downcasting esplicito
Upcasting esplicito
L’upcasting è il processo di trasformazione di un sottotipo in un supertipo nella direzione verso l’alto dell’albero ereditario. Quando un oggetto sottoclasse viene referenziato da una variabile di riferimento della superclasse, viene attivato un processo automatico senza ulteriori sforzi.
Esempio:
Giava
// 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();> >}> }> |
>
>
cosa è const in JavaProduzione
The dog barks>
Downcasting esplicito
Quando un tipo di sottoclasse fa riferimento a un oggetto della classe genitore, il processo viene definito downcasting. Se viene eseguito manualmente, il compilatore genera un errore ClassCastException di runtime. Può essere fatto solo utilizzando l'operatore istanzaof. È possibile solo l'abbattimento di un oggetto già rovesciato.
Esempio:
Giava
// 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();> >}> }> |
>
>Produzione
The animal is eating. The cat is meowing.>