Vad är det här sökordet i Java?

Java är ett objektorienterat språk och det kan finnas många objekt i taget, på de vi kan använda, "detta" nyckelord här kommer i bilden eftersom det hjälper till att peka det aktuella instansen eller det aktuella objektet i en klass.

Därför när vi ser till att åberopa metoder för den aktuella klassen, när vi vill åberopa konstruktorn för den aktuella klassen, returnera den aktuella instansen från metoder, skicka den aktuella instansen till metoder; i alla dessa fall är detta nyckelord praktiskt.

Exempel på användningsfall

  1. Synkroniserat block i multithreading använder detta nyckelord som ett argument
  2. Konstruktörens överbelastning

Varför använda detta sökord i Java?

  • "denna" -variabel fungerar som en slutlig variabel i java, dvs vi kan inte tilldela något värde till "den här" variabeln, detta kan krysskontrolleras genom att tilldela ett värde till "detta" nyckelord och det kommer att leda till ett sammanställningsfel.
  • "detta" kan också användas för att hänvisa till statiska medlemmar (men det ska inte göras) eftersom statiska medlemmar deklareras endast en gång, dvs. minnesfördelningen som gjorts till dem är bara en gång och om vi försöker göra manipulationer med hjälp av 'detta' sökord så är det kommer alltid att manipulera de data som är placerade på den minnesplatsen snarare än att skapa data på nya minnesplatser, vilket objekt gör.
  • Detta förhindrar uppgiften att göra onödiga tilldelningar till variabler och ibland behöver vi inte skapa extra variabler också, "detta" nyckelord där det används ger oss den säkerhet som den nuvarande instansen refereras till.

Betydelsen av detta sökord

Exemplen nedan visar att vi måste skapa variabler med olika namn för särskilda egenskaper, de kan helt enkelt tilldelas i konstruktör under objektinitiering med hjälp av detta nyckelord.

  • Förhindrar medlemsvariabel och lokal variabelnamnkonflikt, man kan hänvisa till medlemsvariabeln med hjälp av detta nyckelord.

public class Student (
int marks;
String subjectName;
//constructor
public Student(int marks, String subjectName)
(
this.marks = marks;
this.subjectName=subjectName;
)
public Student()
(
)
public static void main(String args())
(
Student s = new Student(1, "name");
)
)

  • Metoder för objektklass kan också åberopas med detta.

//consider a method shown here
public String getName()
(
return this.toString();
)

  • Detta kan användas i setter- och getter-metoder för att returnera de aktuella instanserna.

Public int getmarks()
(
return this.marks;
)
public void setMarks(int marks)
(
this.marks =marks;
)

Särskilt användande av detta sökord

Här är några användningar av detta sökord som förklaras nedan med implementering:

1. Använd Med-i ett fält

public class PointCoordinates (
public int xval = 0;
public int yval = 0;
//constructor
public PointCoordinates (int a, int b) (
xval = a;
yval = b;
)
public static void main(String args())
(
)
)

Men det kunde ha skrivits så här:

public class PointCoordinates (
public int xval = 0;
public int yval= 0;
//constructor
public PointCoordinates (int xval, int yval) (
this.xval = xval;
this.yval = yval;
)
public static void main(String args())
(
)
)

Så detta var något vi förklarade i det sista avsnittet också, där det kan ses att namnkonventionerna för ett slags datafält kan hållas enhetliga om vi använder "detta" sökord.

Därför är det inte meningen att en utvecklare ska hålla reda på eller kartlägga ett diagram över variabler för samma typ av logiskt datafält.

2. Konstruktörens kallelse med hjälp av detta sökord

Vi kan använda detta nyckelord i en konstruktör och ringa en annan konstruktör därifrån, i samma klass. Detta kallas också uttrycklig anrop till konstruktör.

Låt oss överväga att ett exempel visar nedan för samma -

public class Square (
private int x;
private int side;
public Square () (
this(1);
)
public Square (int side) (
this(0, side);
)
public Square (int x, int side) (
this.x = x;
this.side = side;
)
public static void main(String args())
(
)
)

Det finns tre konstruktörer här på bilden. Observera att standardkonstruktören är tänkt att placeras uttryckligen när vi gör överbelastning av konstruktörer.

Dessa konstruktörer initialiserar vissa medlemsvariabler, kompilatorn får här en indikation om konstruktörens anrop via antalet parametrar som används i metoderna.

3. Återvända nuvarande klassinstans med hjälp av detta sökord

class Rectangle
(
int height;
int width;
Rectangle()
(
height = 10;
width = 20;
)
//Method to return current class instance
Rectangle getObject()
(
return this;
)
public void print()
(
System.out.println(height+", "+ width);
)
public static void main(String() args)
(
Rectangle object = new Rectangle();
object.getObject().print();
)
)

Så i exemplet som visas ovan kan det ses att det aktuella objektet returneras från en getter-metod och i det fallet har den specifika metoden "print" åberopats.

4. Använd som metodparameter

class Rectangle
(
int height;
int width;
Rectangle()
(
height = 10;
width = 20;
)
void getObject()
(
print(this);
)
public void print(Rectangle object)
(
System.out.println(object.height + ", " + object.width);
)
public static void main(String() args)
(
Rectangle object = new Rectangle();
object.getObject();
)
)

Exemplet citerade hur det aktuella objektet skickas till en metod som kan använda detta objekt för sin anpassade användning.

Slutsats

Vi såg olika användningsfall här, med hänvisning till varianterna mot användning av detta sökord i java och var de ska användas och var de inte ska använda, dessa villkor har ställts upp på ett uttryckligt sätt.
"detta" nyckelord är vanligt bland alla programmeringsspråk, även i javascript-baserade ramverk, "detta" finner en nyckelroll.
"detta" nyckelord kan bli överhead om det inte förstås väl och det är till stor hjälp för utvecklare om de förstås ordentligt.

Rekommenderade artiklar

Detta är en guide till detta sökord i java. Här diskuterar vi vikt, speciella användningar och exempel på detta sökord i java tillsammans med dess kodimplementering. Du kan också titta på följande artiklar för att lära dig mer-

  1. Objekt i Java
  2. Inkapsling i JavaScript
  3. Statiska nyckelord i Java
  4. Överbelastning och överbestyrning i Java
  5. Funktion och regler för åsidosättande i Python

Kategori: