dette søkeordet i Java
Hva er dette nøkkelordet i Java?
dette søkeordet i Java er en referansevariabel som refererer til det gjeldende objektet til en metode eller en konstruktør. Hovedformålet med å bruke dette søkeordet i Java er å fjerne forvirringen mellom klasseattributter og parametere som har samme navn.
Bruk av dette søkeordet i Java
Følgende er ulike bruksområder for "dette" søkeord i Java:
- Den kan brukes til å referere forekomstvariabel for gjeldende klasse
- Den kan brukes til å påkalle eller starte gjeldende klassekonstruktør
- Det kan sendes som et argument i metodekallet
- Det kan sendes som argument i konstruktørkallet
- Den kan brukes til å returnere gjeldende klasseforekomst
Klikk her. hvis videoen ikke er tilgjengelig
Forstå "dette" søkeordet med et eksempel.
- Klasse: klassekonto
- Forekomstvariabel: a og b
- Metode Sett data: For å angi verdien for a og b.
- Metode Vis data: For å vise verdiene for a og b.
- Hovedmetode: hvor vi lager et objekt for kontoklasse og kallemetoder setter data og viser data.
La oss kompilere og kjøre koden
Vår forventede utgang for A og B bør initialiseres til henholdsvis verdiene 2 og 3.
Men verdien er 0, hvorfor? La undersøke.
I metoden Set data er argumentene deklarert som a og b, mens instansvariablene også er navngitt som a og b.
Under utførelse er kompilatoren forvirret. Hvorvidt "a" på venstre side av den tilordnede operatoren er forekomstvariabelen eller den lokale variabelen. Derfor setter den ikke verdien av 'a' når metodesettets data kalles.
Løsningen er "dette" nøkkelordet
Legg til både 'a' og 'b' med Java dette nøkkelordet etterfulgt av en prikk (.)-operator.
Under kodekjøring når et objekt kaller metoden 'setdata'. Nøkkelordet "dette" erstattes av objektbehandleren "obj." (Se bildet nedenfor).
Så nå vet kompilatoren,
- 'a'en på venstre side er en Instance-variabel.
- Mens 'a' på høyre side er en lokal variabel
Ocuco variabler initialiseres riktig, og forventet utgang vises.
Anta at du er smart nok til å velge forskjellige navn for instansvariabelen og metodeargumentene dine.
Men denne gangen oppretter du to objekter i klassen, som hver kaller settdatametoden.
Hvordan kompilatoren vil avgjøre om den skal fungere på instansvariabelen til objekt 1 eller objekt 2.
Vel, kompilatoren legger implisitt til instansvariabelen med «dette» nøkkelordet (bildet nedenfor).
Slik at når objekt 1 kaller oppsettdatametoden, blir en forekomstvariabel lagt til av referansevariabelen.
Mens objekt 2 kaller oppsettdatametoden, endres en forekomstvariabel for objekt 2.
Denne prosessen ivaretas av kompilatoren selv. Du trenger ikke å legge til "dette" søkeord eksplisitt med mindre det er en eksepsjonell situasjon som i vårt eksempel.
dette søkeordet i Java med eksempel
Eksempel: For å lære å bruke "dette" nøkkelordet
Trinn 1) Kopier følgende kode til en notisblokk.
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(); } }
Trinn 2) Lagre, kompiler og kjør koden.
Trinn 3) Verdien av a og b vises som null? For å rette feilen, legg til linje #6 og 7 med "denne" nøkkelord.
this.a =a; this.b =b;
Trinn 4) Lagre, kompiler og kjør koden. Denne gangen er verdiene av a og b satt til henholdsvis 2 og 3.
Sammendrag
- denne Nøkkelord i Java er en referansevariabel som refererer til det gjeldende objektet.
- En av bruken av dette søkeordet i Java er å referere gjeldende klasseforekomstvariabel
- Den kan brukes til å påkalle eller starte gjeldende klassekonstruktør
- Det kan sendes som et argument i metodekallet
- denne pekeren inn Java kan sendes som argument i konstruktørkallet
- denne operatøren i Java kan brukes til å returnere gjeldende klasseforekomst
- dette i Java er en referanse til det gjeldende objektet, hvis metode brukes.
- Du kan bruke «dette» nøkkelordet for å unngå navnekonflikter i metoden/konstruktøren til forekomsten/objektet.
Sjekk vår artikkel om Java Intervjuspørsmål:- Klikk her