Detta nyckelord i Java: Vad är & Hur man använder med exempel

Innehållsförteckning:

Anonim

Vad är detta nyckelord i Java?

det här nyckelordet i Java är en referensvariabel som refererar till det aktuella objektet för en metod eller en konstruktör. Huvudsyftet med att använda detta nyckelord i Java är att ta bort förvirringen mellan klassattribut och parametrar som har samma namn.

Följande är olika användningar av 'detta' nyckelord i Java:

  • Den kan användas för att hänvisa instansvariabel till aktuell klass
  • Den kan användas för att åberopa eller initiera nuvarande klasskonstruktör
  • Det kan skickas som ett argument i metodanropet
  • Det kan skickas som argument i konstruktionsanropet
  • Den kan användas för att returnera den aktuella klassinstansen

Klicka här om videon inte är tillgänglig

Förstå "detta" nyckelord med ett exempel.

Java detta sökordsexempel
  1. Klass : klasskonto
  2. Instansvariabel : a och b
  3. Metod Set data : För att ställa in värdet för a och b.
  4. Metod Visa data : Visa värdena för a och b.
  5. Huvudmetod: där vi skapar ett objekt för kontoklass och anropsmetoder ställer in data och visar data.

Låt oss sammanställa och köra koden

Vår förväntade effekt för A och B bör initialiseras till värdena 2 respektive 3.

Men värdet är 0, varför? Låt undersöka.

I metoden Set data deklareras argumenten som a och b, medan förekomstvariablerna också namnges som a och b.

Under körningen är kompilatorn förvirrad. Huruvida "a" på den tilldelade operatörens vänstra sida är instansvariabeln eller den lokala variabeln. Därför ställer det inte in värdet "a" när metoduppsättningsdata anropas.

Lösningen är "detta" nyckelord

Lägg till både 'a' och 'b' med Java detta nyckelord följt av en punkt (.) -Operator.

Under kodkörning när ett objekt kallar metoden 'setdata'. Nyckelordet "detta" ersätts av objekthanteraren "obj." (Se bilden nedan).

Så nu vet kompilatorn,

  • 'A' på vänster sida är en instansvariabel.
  • Medan 'a' på höger sida är en lokal variabel

Variablerna initialiseras korrekt och den förväntade produktionen visas.

Antag att du är smart nog att välja olika namn för din instansvariabel och metodargument.

Men den här gången skapar du två objekt i klassen, var och en anropar den inställda datametoden.

Hur kompilatorn kommer att avgöra om den ska fungera på instansvariabeln för objekt 1 eller objekt 2.

Tja, kompilatorn lägger implicit till instansvariabeln med "detta" nyckelord (bild nedan).

Så att när objekt 1 anropar den inställda datametoden läggs en instansvariabel till med sin referensvariabel.

Medan objekt 2 anropar den inställda datametoden ändras en instansvariabel för objekt 2.

Denna process tas hand av kompilatorn själv. Du behöver inte lägga till "detta" nyckelord uttryckligen såvida det inte finns en exceptionell situation som i vårt exempel.

Exempel: För att lära dig användningen "detta" nyckelord

Steg 1) Kopiera följande kod till ett anteckningsblock.

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

Steg 2) Spara, kompilera och köra koden.
Steg 3) Värdet på a & b visas som noll? För att rätta till felet, lägg till rad # 6 och 7 med " detta " nyckelord.

this.a =a;this.b =b;

Steg 4) Spara, kompilera och kör koden. Den här gången är värdena för a & b inställda på 2 respektive 3.

Sammanfattning

  • detta nyckelord i Java är en referensvariabel som refererar till det aktuella objektet.
  • En av användningen av detta nyckelord i Java är att hänvisa till aktuell klassinstansvariabel
  • Den kan användas för att åberopa eller initiera nuvarande klasskonstruktör
  • Det kan skickas som ett argument i metodanropet
  • den här pekaren i Java kan skickas som argument i konstruktionsanropet
  • denna operatör i Java kan användas för att returnera den aktuella klassinstansen
  • detta i Java är en referens till det aktuella objektet, vars metod uppmanas.
  • Du kan använda "detta" nyckelord för att undvika namngivningskonflikter i metoden / konstruktören för din instans / objekt.