tämä avainsana Java
Mitä tämä avainsana sisältää Java?
tämä avainsana sisään Java on viitemuuttuja, joka viittaa menetelmän tai konstruktorin nykyiseen objektiin. Tämän avainsanan käytön päätarkoitus Java on poistaa sekaannus luokkaattribuuttien ja parametrien välillä, joilla on sama nimi.
Tämän avainsanan käyttö Java
Seuraavassa on erilaisia "tämän" avainsanan käyttötapoja Java:
- Sitä voidaan käyttää viittaamaan nykyisen luokan ilmentymämuuttujaan
- Sitä voidaan käyttää nykyisen luokan rakentajan kutsumiseen tai käynnistämiseen
- Se voidaan välittää argumenttina metodikutsussa
- Se voidaan välittää argumenttina konstruktorikutsussa
- Sitä voidaan käyttää nykyisen luokan ilmentymän palauttamiseen
Napauta tätä jos video ei ole saatavilla
Ymmärrä "tämä" avainsana esimerkin avulla.
- luokka: luokan tili
- Instanssimuuttuja: a ja b
- Menetelmä Aseta tiedot: A:n ja b:n arvon asettaminen.
- Menetelmä Näytä tiedot: Näyttää a:n ja b:n arvot.
- Päämenetelmä: jossa luomme objektin Account-luokalle ja kutsumenetelmien joukkodatalle ja näytämme dataa.
Käännetään ja ajetaan koodi
A:n ja B:n odotettu lähtö tulee alustaa arvoihin 2 ja 3.
Mutta arvo on 0, miksi? Antaa tutkia.
Metodissa Set data argumentit ilmoitetaan a:lla ja b:llä, kun taas ilmentymämuuttujat on myös nimetty a:lla ja b:llä.
Suorituksen aikana kääntäjä on hämmentynyt. Onko "a" määritetyn operaattorin vasemmalla puolella ilmentymämuuttuja vai paikallinen muuttuja. Näin ollen se ei aseta 'a':n arvoa, kun menetelmäjoukon tietoja kutsutaan.
Ratkaisu on "tämä" avainsana
Liitä sekä "a" ja "b" kanssa Java tämän avainsanan jälkeen piste (.) -operaattori.
Koodin suorittamisen aikana, kun objekti kutsuu menetelmää "setdata". Avainsana "this" korvataan objektinkäsittelijällä "obj". (Katso alla oleva kuva).
Joten nyt kääntäjä tietää,
- Vasemmalla puolella oleva "a" on ilmentymämuuttuja.
- Oikealla puolella oleva "a" on paikallinen muuttuja
- muuttujat on alustettu oikein, ja odotettu tulos näytetään.
Oletetaan, että olet tarpeeksi älykäs valitsemaan eri nimet ilmentymämuuttuja- ja metodiargumenteille.
Mutta tällä kertaa luot kaksi luokan objektia, joista jokainen kutsuu set data -metodia.
Kuinka kääntäjä määrittää, onko sen tarkoitus toimia objektin 1 vai objektin 2 ilmentymämuuttujan kanssa.
No, kääntäjä implisiittisesti liittää instanssimuuttuja "this"-avainsanalla (alla oleva kuva).
Sellaisena, että objektin 1 kutsuessa joukkodatamenetelmää, instanssimuuttuja liitetään sen viitemuuttujaan.
Kun objekti 2 kutsuu set data -metodia, objektin 2 ilmentymämuuttujaa muutetaan.
Tästä prosessista huolehtii kääntäjä itse. Sinun ei tarvitse liittää "tätä" avainsanaa nimenomaisesti, ellei kyseessä ole poikkeustilanne, kuten esimerkissämme.
tämä avainsana Java esimerkin kanssa
Esimerkiksi: Käytä "tätä" avainsanaa oppiaksesi
Vaihe 1) Kopioi seuraava koodi muistilehtiöön.
class Account{ int a; int b; public void setData(int a ,int b){ a = a; b = b; } public void showData(){ System.out.println("Value of A ="+a); System.out.println("Value of B ="+b); } public static void main(String args[]){ Account obj = new Account(); obj.setData(2,3); obj.showData(); } }
Vaihe 2) Tallenna, käännä ja suorita koodi.
Vaihe 3) Näytetäänkö a & b:n arvo nollana? Korjaa virhe liittämällä rivit 6 ja 7 "tätä”avainsana.
this.a =a; this.b =b;
Vaihe 4) Tallenna, kokoa ja suorita koodi. Tällä kertaa a:n ja b:n arvot on asetettu 2:ksi ja 3:ksi.
Yhteenveto
- tätä Avainsana sisään Java on viitemuuttuja, joka viittaa nykyiseen objektiin.
- Yksi tämän avainsanan käyttötavoista Java on viitata nykyisen luokan ilmentymän muuttujaan
- Sitä voidaan käyttää nykyisen luokan rakentajan kutsumiseen tai käynnistämiseen
- Se voidaan välittää argumenttina metodikutsussa
- tämä osoitin sisään Java voidaan välittää argumenttina konstruktorikutsussa
- tämä operaattori sisään Java voidaan käyttää nykyisen luokan ilmentymän palauttamiseen
- tämä sisään Java on viittaus nykyiseen objektiin, jonka menetelmää kutsutaan.
- Voit käyttää "tätä" avainsanaa välttääksesi nimiristiriidat ilmentymäsi/objektisi menetelmässä/konstruktorissa.
Tarkista artikkelimme aiheesta Java Haastattelukysymykset: - Klikkaa tästä