dit trefwoord in Java

⚡ Slimme samenvatting

Java Het sleutelwoord `this` is een referentievariabele die verwijst naar het huidige object binnen een methode of constructor. LessOns behandelt het doel, veelvoorkomende toepassingen, naamconflicten, het aaneenschakelen van constructors en een uitgewerkt voorbeeld.

  • 🔑 Definitie: Dit verwijst naar de huidige instantie van een klasse.
  • 🧱 Conflicten oplossen: Gebruik this.field om instantievariabelen te onderscheiden van parameters met dezelfde naam.
  • 🪜 Gebruik van de constructor: this() roept een andere constructor van dezelfde klasse aan voor een schonere initialisatie.
  • ✅ Passeren en retourneren: Geef dit als argument door of retourneer het om method chaining te ondersteunen.
  • 🧪 Uitgewerkt voorbeeld: De Account-klasse laat zien hoe dit het probleem van nul uitvoer, veroorzaakt door parameter shadowing, oplost.
  • 🤖 AI-assistentie: AI-codeertools detecteren ontbrekende 'this'-voorvoegsels en stellen nauwkeurige refactoring-opties voor.

dit trefwoord in Java

Waar zit dit zoekwoord in Java?

De dit trefwoord in Java is een referentievariabele die verwijst naar het huidige object van een methode of een constructor. Het belangrijkste doel van het gebruik van dit zoekwoord in Java Het doel is om verwarring te voorkomen tussen klasse-attributen en parameters met dezelfde naam.

Gebruik van dit trefwoord in Java

Hieronder volgen verschillende toepassingen van dit trefwoord in Java:

  • Het kan worden gebruikt om te verwijzen naar de instantievariabele van de huidige klasse.
  • Het kan worden gebruikt om de huidige klasseconstructor aan te roepen of te initialiseren.
  • Het kan als argument worden doorgegeven bij een methodeaanroep.
  • Het kan als argument worden doorgegeven bij een constructoroproep.
  • Het kan worden gebruikt om het huidige klasse-exemplaar terug te geven.

Klik hier als de video niet toegankelijk is

Hoe begrijp je dit sleutelwoord aan de hand van een voorbeeld?

dit trefwoord in Java
Java dit trefwoord Voorbeeld

  1. Klasse: klasserekening
  2. Instantievariabele: a en b
  3. Methode Gegevens instellen: Om de waarde voor a en b in te stellen.
  4. Methode Gegevens weergeven: Om de waarden voor a en b weer te geven.
  5. Belangrijkste methode: waarbij we een object maken voor de Account-klasse en de methoden `set data` en `show data` aanroepen.

De verwarring rondom compilers wegnemen

Laten we de code compileren en uitvoeren.

Onze verwachte uitvoer voor A en B moet respectievelijk worden geïnitialiseerd op de waarden 2 en 3.

Maar de waarde is 0. Waarom? Laten we dat eens onderzoeken.

dit trefwoord in Java

In de methode Set data worden de argumenten gedeclareerd als a en b, terwijl de instantievariabelen ook de namen a en b hebben.

dit trefwoord in Java

Tijdens de uitvoering raakt de compiler in de war. Hij weet niet zeker of "a" aan de linkerkant van de toewijzingsoperator een instantievariabele of een lokale variabele is. Daardoor wordt de waarde van "a" niet ingesteld wanneer de methode `setData` wordt aangeroepen.

dit trefwoord in Java

De oplossing is dit trefwoord.

Voeg zowel “a” als “b” toe aan de Java dit trefwoord gevolgd door een punt (.) operator.

dit trefwoord in Java

Tijdens de uitvoering van de code, wanneer een object de methode `setdata` aanroept, wordt het sleutelwoord `this` vervangen door de objecthandler "obj". (Zie de afbeelding hieronder.)

dit trefwoord in Java

Dus nu weet de compiler:

  • De "a" aan de linkerkant is een instantievariabele.
  • De "a" aan de rechterkant is daarentegen een lokale variabele.

De variabelen worden correct geïnitialiseerd en de verwachte uitvoer wordt weergegeven.

dit trefwoord in Java

Hoe de compiler omgaat met meerdere objecten

Stel dat u verschillende namen kiest voor uw instantievariabele en methodeargumenten.

dit trefwoord in Java

Maar deze keer maak je twee objecten van de klasse, die elk de set data-methode aanroepen.

Hoe bepaalt de compiler of hij moet werken met de instantievariabele van object 1 of object 2?

dit trefwoord in Java

Nou, de compiler voegt impliciet toe de instantievariabele met het trefwoord 'this' (zie afbeelding hieronder).

dit trefwoord in Java

Zodanig dat wanneer object 1 de set-datamethode aanroept, een instantievariabele wordt toegevoegd aan zijn referentievariabele.

dit trefwoord in Java

Terwijl object 2 de ingestelde gegevensmethode aanroept, wordt een instantievariabele van object 2 gewijzigd.

dit trefwoord in Java

De compiler handelt dit automatisch af. U hoeft het trefwoord `this` niet expliciet toe te voegen, tenzij een uitzonderlijke situatie dit vereist.

Voorbeeld: dit trefwoord in Java Met Code

Voorbeeld: Om te leren hoe je dit trefwoord gebruikt.

Stap 1) Kopieer de volgende code in een kladblok.

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

Stap 2) Sla de code op, compileer deze en voer hem uit.

Stap 3) De waarden van a en b worden als nul weergegeven? Om de fout te corrigeren, voeg je de volgende regel toe aan regel 6 en 7: dit trefwoord.

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

Stap 4) Sla de code op, compileer deze en voer hem uit. Deze keer zijn de waarden van a en b ingesteld op respectievelijk 2 en 3.

Veelgestelde vragen

Het sleutelwoord `this` verwijst naar het object waarvan de methode of constructor momenteel wordt uitgevoerd. Het geeft de code toegang tot de instantievelden en -methoden van dat object.

Nee. Het sleutelwoord `this` hoort bij een instantie, terwijl statische methoden op klasseniveau bestaan. Het gebruik van `this` binnen een statische methode veroorzaakt een compileerfout.

`this()` roept een andere constructor van dezelfde klasse aan als de eerste instructie. Dit voorkomt dubbele code en zorgt ervoor dat één constructor de `setup`-methode kan delegeren aan een overbelaste constructor.

AI-codeerassistenten signaleren verborgen parameters, voegen het ontbrekende 'this'-voorvoegsel toe en herschrijven constructors om 'this()'-ketens en vloeiende setters te gebruiken die 'this' retourneren.

AI-tutoren leggen objectidentiteit uit, tonen het verschil tussen instantie- en lokale scope en geven stapsgewijze voorbeelden met quizzen die verduidelijken wanneer het sleutelwoord 'this' gebruikt moet worden.

Check ons ​​artikel op Java Interviewvragen: - Klik hier

Vat dit bericht samen met: