logo

Tipų siuntimas Java

Tipo siuntimas Java yra vieno duomenų tipo konvertavimo į kitą duomenų tipą procesas naudojant liejimo operatorių. Kai priskiriate vieno primityvaus duomenų tipo reikšmę kitam tipui, tai vadinama tipo perdavimu. Norint įgalinti kintamąjį naudoti konkrečiu būdu, šis metodas reikalauja aiškiai nurodyti Java kompiliatoriui, kad vieno duomenų tipo kintamasis būtų traktuojamas kaip kito duomenų tipo kintamasis.

Sintaksė:



 variableName = () value;>

Tipo liejimo tipai

Java yra dviejų tipų perdavimo tipai:

  • Išplėtimo tipo liejimas
  • Siauro tipo liejimas

Išplėtimo tipo liejimas

Žemesnis duomenų tipas paverčiamas aukštesniu naudojant procesą, vadinamą platėjančio tipo liejimu. Numanomas tipas liejimas ir numetimas žemyn yra keli jo pavadinimai. Tai atsiranda natūraliai. Kadangi duomenų praradimo tikimybės nėra, jis yra saugus. Išplėtimo tipo liejimas vyksta, kai:

  • Tikslo tipas turi būti didesnis nei šaltinio tipas.
  • Abu duomenų tipai turi būti suderinami vienas su kitu.

Sintaksė:



larger_data_type variable_name = smaller_data_type_variable;>


Java






pandos ašis
// 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);> >}> }>

>

>

Išvestis

kiek sveria kat timpf
Integer: 10 Long: 10 Double: 10.0>

Siauro tipo liejimas

Didesnio tipo duomenų sumažinimas į mažesnį yra žinomas kaip susiaurėjimo tipo liejimas. Išliejimas arba aiškaus tipo liejimas yra kiti jo pavadinimai. Tai atsitinka ne tik savaime. Jei aiškiai to nepadarysime, atsiras kompiliavimo laiko klaida. Siaurinti tipo perdavimas yra nesaugus, nes duomenys gali būti prarasti dėl mažesnio žemesnio tipo duomenų leistinų verčių diapazono. Liejimo operatorius padeda atlikti aiškų atkūrimą.

Sintaksė:

smaller_data_type variable_name = (smaller_data_type) larger_data_type_variable;>

Pavyzdys:

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

>

>

Išvestis

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

Aiškaus perdavimo tipai

Iš esmės yra dviejų tipų aiškus perdavimas:

  • Aiškus transliavimas
  • Aiškus nuvertinimas

Aiškus transliavimas

Perkėlimas yra procesas, kai potipis perkeliamas į supertipą paveldėjimo medžio aukštyn kryptimi. Kai antrinės klasės nuorodos kintamasis nurodo poklasio objektą, be jokių papildomų pastangų įjungiamas automatinis procesas.

Pavyzdys:

Java




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

>

Android versijos istorija

>

Išvestis

The dog barks>

Aiškus nuvertinimas

Kai poklasio tipas nurodo pirminės klasės objektą, procesas vadinamas sumažinimu. Jei tai daroma rankiniu būdu, kompiliatorius išduoda vykdymo klaidą ClassCastException. Tai galima padaryti tik naudojant operatorių instanceof. Galimas tik objekto, kuris jau buvo pakeltas, nuleidimas.

Pavyzdys:

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

>

>

Išvestis

The animal is eating. The cat is meowing.>