Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java dieses Schlüsselwort

Java dieses Schlüsselwort

In diesem Artikel erfahren wir anhand von Beispielen mehr über dieses Schlüsselwort in Java, wie und wo man es verwendet.

dieses Schlüsselwort

In Java wird dieses Schlüsselwort verwendet, um auf das aktuelle Objekt innerhalb einer Methode oder eines Konstruktors zu verweisen. Zum Beispiel

class Main {
    int instVar;

    Main(int instVar){
        this.instVar = instVar;
        System.out.println("this reference = " + this);
    }

    public static void main(String[] args) {
        Main obj = new Main(8);
        System.out.println("object reference = " + obj);
    }
}

Ausgabe :

this reference = Main@23fc625e
object reference = Main@23fc625e

Im obigen Beispiel haben wir ein Objekt namens obj erstellt der Klasse Main . Wir geben dann die Referenz auf das Objekt obj aus und this Schlüsselwort der Klasse.

Hier können wir sehen, dass die Referenz der beiden obj und this ist dasselbe. Dies bedeutet, dass dies nichts anderes als die Referenz auf das aktuelle Objekt ist.


Verwendung dieses Keywords

Es gibt verschiedene Situationen, in denen this Schlüsselwort wird häufig verwendet.

Dies für mehrdeutige Variablennamen verwenden

In Java ist es nicht erlaubt, zwei oder mehr Variablen mit demselben Namen innerhalb eines Bereichs (Klassenbereich oder Methodenbereich) zu deklarieren. Instanzvariablen und Parameter können jedoch denselben Namen haben. Zum Beispiel

class MyClass {
    // instance variable
    int age;

    // parameter
    MyClass(int age){
        age = age;
    }
}

Im obigen Programm haben die Instanzvariable und der Parameter denselben Namen:Alter. Hier ist der Java-Compiler aufgrund von Namensmehrdeutigkeiten verwirrt.

In einer solchen Situation verwenden wir dieses Schlüsselwort. Zum Beispiel

Sehen wir uns zuerst ein Beispiel an, ohne this zu verwenden Stichwort:

class Main {

    int age;
    Main(int age){
        age = age;
    }

    public static void main(String[] args) {
        Main obj = new Main(8);
        System.out.println("obj.age = " + obj.age);
    }
}

Ausgabe :

obj.age = 0

Im obigen Beispiel haben wir 8 übergeben als Wert für den Konstruktor. Wir erhalten jedoch 0 als Ausgabe. Dies liegt daran, dass der Java-Compiler aufgrund der Mehrdeutigkeit der Namen zwischen Instanz, Variable und Parameter verwirrt wird.

Lassen Sie uns nun den obigen Code mit this umschreiben Schlüsselwort.

class Main {

    int age;
    Main(int age){
        this.age = age;
    }

    public static void main(String[] args) {
        Main obj = new Main(8);
        System.out.println("obj.age = " + obj.age);
    }
}

Ausgabe :

obj.age = 8

Jetzt erhalten wir die erwartete Ausgabe. Denn wenn der Konstruktor aufgerufen wird, this innerhalb des Konstruktors wird durch das Objekt obj ersetzt das hat den Konstruktor aufgerufen. Daher das Alter Variable wird der Wert 8 zugewiesen .

Wenn der Name des Parameters und der Instanzvariablen unterschiedlich sind, hängt der Compiler dieses Schlüsselwort automatisch an. Zum Beispiel der Code:

class Main {
    int age;

    Main(int i) {
        age = i;
    }
}

entspricht:

class Main {
    int age;

    Main(int i) {
        this.age = i;
    }
}

dies mit Gettern und Settern

Eine weitere häufige Verwendung von this Das Schlüsselwort befindet sich in Setter- und Getter-Methoden einer Klasse. Zum Beispiel:

class Main {
   String name;

   // setter method
   void setName( String name ) {
       this.name = name;
   }

   // getter method
   String getName(){
       return this.name;
   }

   public static void main( String[] args ) {
       Main obj = new Main();

       // calling the setter and the getter method
       obj.setName("Toshiba");
       System.out.println("obj.name: "+obj.getName());
   }
}

Ausgabe :

obj.name: Toshiba

Hier haben wir this verwendet Stichwort:


Dies beim Konstruktorüberladen verwenden

Beim Arbeiten mit dem Überladen von Konstruktoren müssen wir möglicherweise einen Konstruktor von einem anderen Konstruktor aufrufen. In einem solchen Fall können wir den Konstruktor nicht explizit aufrufen. Stattdessen müssen wir this verwenden Schlüsselwort.

Hier verwenden wir eine andere Form dieses Schlüsselworts. Das heißt, this() . Nehmen wir ein Beispiel,

class Complex {

    private int a, b;

    // constructor with 2 parameters
    private Complex( int i, int j ){
        this.a = i;
        this.b = j;
    }

    // constructor with single parameter
    private Complex(int i){
        // invokes the constructor with 2 parameters
        this(i, i); 
    }

    // constructor with no parameter
    private Complex(){
        // invokes the constructor with single parameter
        this(0);
    }

    @Override
    public String toString(){
        return this.a + " + " + this.b + "i";
    }

    public static void main( String[] args ) {
  
        // creating object of Complex class
        // calls the constructor with 2 parameters
        Complex c1 = new Complex(2, 3); 
    
        // calls the constructor with a single parameter
        Complex c2 = new Complex(3);

        // calls the constructor with no parameters
        Complex c3 = new Complex();

        // print objects
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
    }
}

Ausgabe :

2 + 3i
3 + 3i
0 + 0i

Im obigen Beispiel haben wir this verwendet Schlüsselwort,

Beachten Sie die Zeile,

System.out.println(c1);

Hier, wenn wir das Objekt c1 drucken , wird das Objekt in einen String umgewandelt. Dabei wird der toString() wird genannt. Da überschreiben wir den toString() Methode innerhalb unserer Klasse erhalten wir die Ausgabe gemäß dieser Methode.

Einer der großen Vorteile von this() ist es, die Menge an doppeltem Code zu reduzieren. Wir sollten jedoch immer vorsichtig sein, wenn wir this() verwenden .

Dies liegt daran, dass das Aufrufen des Konstruktors von einem anderen Konstruktor Overhead hinzufügt und ein langsamer Prozess ist. Ein weiterer großer Vorteil der Verwendung von this() ist es, die Menge an doppeltem Code zu reduzieren.

Hinweis :Das Aufrufen eines Konstruktors von einem anderen Konstruktor wird als expliziter Konstruktoraufruf bezeichnet.


Dies als Argument übergeben

Wir können this verwenden -Schlüsselwort, um das aktuelle Objekt als Argument an eine Methode zu übergeben. Zum Beispiel

class ThisExample {
    // declare variables
    int x;
    int y;

    ThisExample(int x, int y) {
       // assign values of variables inside constructor
        this.x = x;
        this.y = y;

        // value of x and y before calling add()
        System.out.println("Before passing this to addTwo() method:");
        System.out.println("x = " + this.x + ", y = " + this.y);

        // call the add() method passing this as argument
        add(this);

        // value of x and y after calling add()
        System.out.println("After passing this to addTwo() method:");
        System.out.println("x = " + this.x + ", y = " + this.y);
    }

    void add(ThisExample o){
        o.x += 2;
        o.y += 2;
    }
}

class Main {
    public static void main( String[] args ) {
        ThisExample obj = new ThisExample(1, -2);
    }
}

Ausgabe :

Before passing this to addTwo() method:
x = 1, y = -2
After passing this to addTwo() method:
x = 3, y = 0

Im obigen Beispiel innerhalb des Konstruktors ThisExample() , beachten Sie die Zeile,

add(this);

Hier nennen wir den add() Methode, indem Sie dies als Argument übergeben. Da dieses Schlüsselwort die Referenz auf das Objekt obj enthält der Klasse können wir den Wert von x ändern und y innerhalb der add() Methode.


Java

  1. C# dieses Schlüsselwort
  2. Java-Operatoren
  3. Java-Kommentare
  4. Java for-each-Schleife
  5. Java-Konstruktoren
  6. Java-Strings
  7. Java dieses Schlüsselwort
  8. Letztes Java-Schlüsselwort
  9. Java-Schnittstelle
  10. Java-Kapselung