Hvad er AutoBoxing og unboxing i Java?



Denne artikel giver dig en omfattende tilgang til autoboxing i Java sammen med nogle eksempler for bedre forståelse.

De fleste gange bruger vi primitive datatyper, mens vi skriver et program på ethvert sprog. Men der er situationer, hvor primitive datatyper mangler inden for og er en af ​​dem. For at overvinde ulemperne ved primitive datatyper bruger vi indpakninger . Denne procedure kaldes Autoboxing. Vi vil diskutere detaljeret autoboxing i Java gennem docket nedenfor:

Lad os begynde.





Hvad er boksning og autoboxing i Java?

Boksning og autoboxing bruges ofte til at henvise til det samme koncept. Men i virkeligheden er de ikke nøjagtigt de samme. Lad os først tale om begrebet boksning. Hvad er boksning? Det lyder som om vi holder noget inde i en kasse, ikke? Ja, når vi siger, at vi bokser eller indpakker en primitiv datatype, betyder det, at vi indpakker den for at danne et objekt. Stadig forvirret? Lad os tage et eksempel.

int FirstNumber = 1

Variabel 'FirstNumber' er af typen int, som er en . Hvad nu, hvis jeg vil konvertere variabel 'FirstNumber' til et objekt? Java giver en måde at gøre det på.



Heltal Andet nummer = nyt heltal (2)

Bemærk, at 'SecondNumber' ikke er af typen int, men det er et objekt af typen Integer. Denne proces med at konvertere primitive datatyper til et objekt kaldes boksning. Du spørger måske, hvordan er dette muligt? Lad os tænke på, hvad der er den enkleste måde at udføre denne opgave på. Vi kan oprette en klasse indeholdende en enkelt attribut af typen int, en konstruktør, der tager en int-type værdi og tildeler den til vores klasseattribut og nogle metoder til at manipulere denne int-værdi. For at finde ud af mere om det henvises til dette dokument .

Vi så, hvordan int-typen kan konverteres til Java. Er der en måde at konvertere andre primitive datatyper til objekter? Ja, Java har henholdsvis indpakningsklasse til forskellige primitive datatyper. Vi vil se på dem i det næste afsnit af dette indlæg.

Autoboxing

På dette tidspunkt ved vi, hvad der er boksning. Lad os nu forstå, hvad der er autoboxing. når boksningsprocessen udføres af kompilatoren uden udtrykkeligt nævnt, kaldes autoboxing.



Lad os forstå dette med et eksempel:

import java.util.ArrayList import java.util.Listclass Box {public static void main (String [] args) {List Mylist = new ArrayList () for (int i = 0 i<10 i++) Mylist.add(i) } }

Som vi diskuterede tidligere accepterer kun objekter, og primitiv datatype fungerer ikke. I ovenstående program konverterede vi ikke typen til objekter af heltalstypen, som programmet stadig udfører uden nogen fejl. Hvordan? Svaret på dette spørgsmål er, at compileren automatisk udførte bokseprocessen, før den tilføjede værdien til 'Mylist', deraf navnet Autoboxing.

Mylist.add (Integer.valueOf (i))

Ovenstående linie kode tilføjes i vores program af kompilatoren.

Bemærk- I ovenstående linie med kodeklasse kaldes navnet 'Heltal' før metoden valueOf (), da valueOf () er en statisk metode. For flere eksempler henvises til dok .

Unboxing and Autounboxing

Vi så hvordan af den primitive datatype konverteres til objekter. Men dette er kun halvdelen af ​​historien. Den anden halvdel af historien konverterer et objekt af en type indpakningsklasse til dets primitive datatype kaldes unboxing .

For eksempel-

Heltal FirstNumber = nyt heltal (1) int SecondNumber = FirstNumber.intValue () System.out.println (SecondNumber)

Output- 1

Autounboxing- Når processen med unboxing udført af compileren uden eksplicit at nævne kaldes Autounboxing.

For eksempel-

Heltal = nyt heltal (20) int num = antal

Ovenstående kode er et eksempel på Autounboxing. I det næste afsnit lærer vi om indpakningsklasser.

Indpakningsklasser

Vi konverterede i type variabel intl Objekt af heltalstype. Denne heltalsklasse er en indpakningsklasse. I Java er en wrapper-klasse tilgængelig for hver . Disse indpakningsklasser hjælper os med at konvertere en variabel fra primitiv type til respektive indpakningsklasse-objekt. Metoderne til indpakningsklasser er nyttige til at manipulere værdierne.

Tabellen nedenfor fortæller os om den primitive datatype og dens respektive indpakningsklasse.

Primitiv type Indpakningsklasse

boolsk

Boolsk

farvel

Byte

char

Karakter

flyde

Flyde

int

java konvertere fra dobbelt til int

Heltal

lang

Lang

kort

Kort

dobbelt

Dobbelt

Bemærk store bogstaver i Wrapper-klasser.

Således er vi nået til slutningen af ​​denne artikel om 'Autoboxing i Java'. Hvis du ønsker at lære mere, skal du tjekke af Edureka, et pålideligt online læringsfirma. Edurekas Java J2EE- og SOA-uddannelses- og certificeringskursus er designet til at træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

Har du et spørgsmål til os? Nævn det i kommentarsektionen på denne blog “autoboxing i Java”, og vi vender tilbage til dig hurtigst muligt.