Johdanto Java-automaattiseen ja -laatikkoon

Autoboxing on automaattinen muuntaminen, jonka Java-kääntäjä tekee primitiivityyppien ja niitä vastaavien objektikääreluokkien välillä, ts. Muuntaminen intistä kokonaislukuksi, kaksinkertaiseksi kaksinkertaiseksi jne. int jne. Tämä ominaisuus otettiin käyttöön Java-version versiossa 1.5, autoboxing ja boxing, samoin kuin JRE: n käsittelemät automaattiset prosessit, tärkein asia tässä on kirjoittaa oikea koodi, joka ei lisää kuvan tarpeettomia kohteita.

Keskustelemme nyt siitä, kuinka Java-automaattiboksi ja -laatikko menee sisäisesti -

  • Kääntäjä käyttää arvoOf () -menetelmää muuntaakseen primitiivit vastaaviksi kääreobjekteiksi (ts. Autoboxingiksi) sisäisesti, päinvastoin, se käyttää intValue (), doubleValue () jne. Kuten paradigmat purettaessa.
  • Viitteenä alla on mainittu kääre ja primäärit, jotka kartoitetaan javassa -
Primitiivinen tyyppiKääreluokka
booleanboolean
tavuTavu
charMerkki
kelluaKellua
intKokonaisluku
pitkäpitkä
lyhytLyhyt
kaksinkertainenKaksinkertainen

Esimerkkejä -

  • Otetaan nyt ArrayList of Integers ja hyödynnetään sitten boxing-konseptia -

import java.util.ArrayList;
public class MyClass (
public static void main(String args()) (
ArrayList intlist = new ArrayList();
//wrapper Integer objects being added here
intlist.add(1);
interest.add(2);
//auto-unboxing is happening here
int x = intlist.get(0);
System.out.println(x);
)
)

  • Siksi, kun yllä olevassa esimerkissä lisätään arvoa x, näemme, että x näyttää alkeelliselta, joten poistolaatikko tapahtuu täällä automaattisesti, kun tämä tehtävä tehdään.

public class MyClass (
public static void main(String args()) (
Integer sum =0;
for(int i=0;i<10;i++)
(
sum = sum + i;
)
System.out.println(sum);
)
)

  • Juuri yläpuolella olemme esittäneet esimerkin -2 tässä yhteydessä, jossa on esitetty tyypillinen skenaario. Jos olet perehtynyt objektin luomiseen Java-järjestelmässä, voit nähdä, että ”Kokonaisluku summa = 0”, julistaa objektin, ja kun suoritamme laskentaa for-silmukan sisällä, voimme nähdä, että primitiivinen arvo “i” lisätään kääreeseen “ summa".
  • Siksi voidaan todeta, että ensin tapahtuu muuntaminen kääreestä primitiiviseksi, koska “+” -operaattori toimii vain primitiivien kohdalla, ja siten objektin poistaminen ensin tapahtuu, sitten laskenta tapahtuu, sitten objektin autoboxing tapahtuu uudelleen ja sitten arvo määritetään muuttujalle “summa”.
  • Tämä aiheuttaa tarpeetonta ylärajaa JVM: llä, koska luodaan useita välitietoja kokonaislukukohteita ja tuhotaan (myöhemmin kerättäviksi roskiksi), mikä voi hidastua, joten tällaisia ​​logiikoita on käsiteltävä varoen.
  • Katsotaan nyt, että yleiset käsitykset eroavat olosuhteista, ja meillä on koodi, jossa autoboxin ja boxin poistaminen ovat erittäin tärkeitä ymmärtää -

Mieti alla olevaa katkelmaa, mikä mielestäsi on tämän tulos?

public class Main
(
public static void main(String() args) (
Integer m = 34123;
Integer x = 34123;
System.out.println(x==m);
)
)

  • Jos sanot "totta", niin olet "vääriä", koska tulos on myös "vääriä", se johtuu siitä, että voimme verrata vain kokonaislukua välillä -128 - 127 näin, arvoille, jotka poistuvat tästä alueesta, niiden on oltava unboxed.
  • Siksi meidän on verrattava yllä olevien kokonaislukujen intValue () -arvoa, toistaiseksi kääntäjä tekee tämän tehdyn arvoonOf () -ominaisuuden avulla.
  • Todennäköisesti, jos tämä kuuluu edellä mainituille alueille, niin yllä oleva koodi antaa sen totta, koska se viittaa ensin kokonaislukuiseen kirjaimelliseen pooliin vertailun vuoksi.

public class Main
(
public static void main(String() args) (
Integer m = 100;
Integer x = 100;
System.out.println(x==m);
)
)

Tämä arvioidaan "todelliseksi" arvoksi, koska 100 on läsnä kirjaimellisessa poolissa.

Autoboxing ja Unboxing Java menetelmien ylikuormituksella

  • Ennen kuin merkitsemme automaattisen laatikon ja laatikon poistamisen menetelmän ylikuormitukseen, oletetaan, että lukija on perehtynyt menetelmän ylikuormituksen käsitteeseen. Annamme vain vähän oivalluksia ja saat lisätietoja, katso Oraclen asiakirjan asiakirjat.
  • Menetelmän ylikuormitus on prosessi, jossa samaa menetelmän nimeä käytetään eri määrän syöttöargumentteja, samojen nimien eri tietotyyppejä samoilla nimillä jne., Käytetään esittämään minkä tahansa laskentamenetelmän useita variantteja yleensä.
  • Otetaan esimerkki samasta ymmärtääksesi sitä syvemmin ja esitetään myös tällä kertaa kuvassa näkyvä lähtö -

public class Main
(
public static void main(String() args) (
Overload obj = new Overload();
int i =5;
obj.printval(5);
Integer m = i;
obj.printval(m);
)
)
class Overload
(
public void printval(int i)
(
System.out.println("printing the unboxed value "+ i);
)
public void printval(Integer i)
(
System.out.println("printing the autoboxed value "+ i);
)
)

Tulos -

tulostamaton arvo 5
tulostetaan automaattisen ruudun arvo 5

Huomaa - voit suorittaa yllä olevan ohjelman missä tahansa IDE: ssä, jotta sinulla olisi yllä oleva sijoitus.

  • Siksi yllä oleva käyttäytyminen kertoo selvästi, että autoboxing-tekniikalla on huomattavaa käyttöä ylikuormituskäsitteissä ja sitä on käytettävä varoen koodauksen aikana.

Autoboxing- ja Boxing-edut Java-

  • Kääntäjä tekee automaattisesti sopivan muuntamisen.
  • Kehittäjän on tarkoitus kirjoittaa pienempi koodi ja siten puhtaampi koodi.
  • Ei tarvita manuaalisia tyyppivalu-lausekkeita.

johtopäätös

Näimme autoboxin ja boxin käytön tapauksen, kuinka implisiittinen tämä käsite on ja missä se voi luoda etuja ja haittoja. Sitä on käytettävä varovaisesti koodauksen aikana, muuten se voi lisätä tarpeettomia laskennallisia muunnoskuluja, joten muuntaukset on tehtävä alukkeissa, jotta vältetään liiallinen jätekeräys yläpuolella ja liiallinen väliaikainen esineiden luominen. Näimme myös automaattisen nyrkkeilytavan käyttötavan Java-ylikuormituskonseptin avulla. Tämän lisäksi voit tarkistaa vielä muutama rajoitus.

Suositellut artikkelit

Tämä on opas Autoboxing- ja Unboxing Java -sovelluksista. Tässä keskustellaan myös siitä, mitä Autoboxing ja Unboxing on Java-levyllä? Kuinka se toimii sisäisesti joidenkin näytekoodien kanssa? Voit myös käydä läpi muiden ehdotettujen artikkeleidemme saadaksesi lisätietoja -

  1. Mikä on JDBC?
  2. Mikä on Generic Java?
  3. Groovy vs Java
  4. Mikä on Java-perintö?
  5. Esimerkkejä ja kuinka Generics toimii C #
  6. JRE vs. JVM | 8 parasta eroa (infografia) kanssa