Maison  >  Article  >  Java  >  Comment utiliser ce mot-clé en Java ?

Comment utiliser ce mot-clé en Java ?

青灯夜游
青灯夜游original
2020-11-02 16:30:4220039parcourir

Utilisation de ce mot-clé en Java : 1. Lorsque les variables membres et les variables locales ont le même nom, lors de l'utilisation de ceci dans une méthode, cela signifie la variable membre de la classe où se trouve la méthode 2. Dans ; le constructeur, vous pouvez appeler d'autres constructeurs de la même classe via ceci ; 3. Utilisez-le pour transmettre plusieurs paramètres en même temps.

Comment utiliser ce mot-clé en Java ?

Recommandations associées : "Tutoriel vidéo Java"

Lorsque les variables membres et les variables locales se chevauchent. Lors de son utilisation dans une méthode, il fait référence à la variable membre de la classe où se trouve la méthode. (c'est l'objet courant lui-même)

public class Hello {
    String s = "Hello"; 
    public Hello(String s) {
       System.out.println("s = " + s);
       System.out.println("1 -> this.s = " + this.s);       
       this.s = s;//把参数值赋给成员变量,成员变量的值改变
       System.out.println("2 -> this.s = " + this.s);
    } 
    public static void main(String[] args) {
       Hello x = new Hello("HelloWorld!");
       System.out.println("s=" + x.s);//验证成员变量值的改变    }
}

Le résultat est :

s = HelloWorld!
1 -> this.s = Hello
2 -> this.s = HelloWorld!
s=HelloWorld!

Dans cet exemple, dans le constructeur Hello, le paramètre s a le même nom que la variable membre s de la classe Hello Si vous opérez directement sur s, vous opérerez sur le paramètre s. Si vous souhaitez opérer sur la variable membre s de la classe Hello, vous devez l'utiliser comme référence. La première ligne du résultat en cours d'exécution consiste à imprimer directement le paramètre s passé dans le constructeur ; la deuxième ligne consiste à imprimer la variable membre s ; la troisième ligne consiste à attribuer d'abord la valeur du paramètre transmis à la variable membre s ; , donc le résultat est HelloWorld! Et la quatrième ligne consiste à imprimer directement la valeur de la variable membre dans la classe dans la fonction principale, et vous pouvez également vérifier le changement de la valeur de la variable membre.

2. Lorsque vous vous passez en paramètre, vous pouvez également utiliser ceci (ceci est passé comme paramètre actuel)

class A {
    public A() {
       new B(this).print();// 调用B的方法
    }
    public void print() {
       System.out.println("HelloAA from A!");
    }
}
class B {
    A a;
    public B(A a) {
       this.a = a;
    }
    public void print() {
       a.print();//调用A的方法
       System.out.println("HelloAB from B!");
    }
}
public class HelloA {
    public static void main(String[] args) {
       A aaa = new A();
       aaa.print();
       B bbb = new B(aaa);
       bbb.print();
    }
}

Le résultat est :

HelloAA from A!
HelloAB from B!
HelloAA from A!
HelloAA from A!
HelloAB from B!

Dans ceci. exemple, dans le constructeur de l'objet A, utilisez new B(this) pour transmettre l'objet A lui-même en tant que paramètre au constructeur de l'objet B.

3. Parfois, nous utiliserons certaines classes internes et classes anonymes, comme le traitement d'événements. Lorsque this est utilisé dans une classe anonyme, this fait référence à la classe anonyme ou à la classe interne elle-même. À ce stade, si nous voulons utiliser les méthodes et variables de la classe externe, nous devons ajouter le nom de la classe externe. Par exemple :

public class HelloB {
    int i = 1;
 
    public HelloB() {
       Thread thread = new Thread() {
           public void run() {
              for (int j=0;j<20;j++) {
                  HelloB.this.run();//调用外部类的方法
                  try {
                     sleep(1000);
                  } catch (InterruptedException ie) {
                  }
              }
           }
       }; // 注意这里有分号
       thread.start();
    }
 
    public void run() {
       System.out.println("i = " + i);
       i++;
    }
   
    public static void main(String[] args) throws Exception {
       new HelloB();
    }
}

Dans l'exemple ci-dessus, le thread est un objet de classe anonyme. Dans sa définition, sa fonction run utilise la fonction run de la classe externe. Pour le moment, puisque la fonction porte le même nom, l’appeler directement ne fonctionnera pas. Il existe actuellement deux manières. La première consiste à modifier le nom de la fonction d'exécution externe, mais cette méthode n'est pas recommandée pour une application à mi-parcours de développement. Vous pouvez ensuite utiliser la méthode de cet exemple pour utiliser le nom de classe de la classe externe ainsi que cette référence pour indiquer que la méthode exécutée de la classe externe doit être appelée.

4. Dans le constructeur, vous pouvez appeler d'autres constructeurs de la même classe via cela. Par exemple :

public class ThisTest {
    ThisTest(String str) {
       System.out.println(str);
    }
    ThisTest() {
       this("this测试成功!");
    }
 
    public static void main(String[] args) {
       ThisTest thistest = new ThisTest();
    }
}

Afin d'expliquer l'utilisation de ceci plus précisément, un autre exemple est :

public class ThisTest {
    private int age;
    private String str;
 
    ThisTest(String str) {
       this.str=str;
       System.out.println(str);
    }
    ThisTest(String str,int age) {
       this(str);
       this.age=age;
       System.out.println(age);
    }
 
    public static void main(String[] args) {
       ThisTest thistest = new ThisTest("this测试成功",25);
      
    }
}

Le résultat est :

this测试成功
25

Il est à noter :
1 : Lors de l'appel d'un autre constructeur pendant la construction, l'action d'appel doit être placée au tout début.
 2 : Le constructeur ne peut être appelé dans aucune fonction autre que le constructeur.
 3 : Un seul constructeur peut être appelé au sein d'un constructeur.

5. Cela transmet plusieurs paramètres en même temps.

public class TestClass {
    int x;
    int y;
 
    static void showtest(TestClass tc) {//实例化对象
       System.out.println(tc.x + " " + tc.y);
    }
    void seeit() {
       showtest(this);
    }
 
    public static void main(String[] args) {
       TestClass p = new TestClass();
       p.x = 9;
       p.y = 10;
       p.seeit();
    }
}

Le résultat est :

9 10

showtest(this) dans le code, où il s'agit de transmettre le p actuellement instancié à la méthode showtest(), puis il s'exécute.

Pour plus de connaissances liées à la programmation, veuillez visiter : Introduction à la programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn