Maison >Java >javaDidacticiel >Qu'est-ce que cela signifie en Java ?

Qu'est-ce que cela signifie en Java ?

青灯夜游
青灯夜游original
2019-11-18 11:51:3813039parcourir

Qu'est-ce que cela signifie en Java ?

ceci est utilisé à l'intérieur d'une classe pour représenter l'instance de classe elle-même.

Ce mot-clé est une référence à lui-même à l'intérieur de la classe, ce qui peut faciliter l'accès des méthodes de la classe à ses propres propriétés.

Utilisation de ceci en Java

1 Lorsque les variables locales et les variables membres ont le même nom, utilisez-le dans la méthode. . variables membres à distinguer.

class Demo{
    String str = "这是成员变量";
    void fun(String str){
        System.out.println(str);
        System.out.println(this.str);
        this.str = str;
        System.out.println(this.str);
    }
}
public class This{
    public static void main(String args[]){
        Demo demo = new Demo();
        demo.fun("这是局部变量");
    }
}

Analyse : La classe ci-dessus Demo a une variable membre str et une variable locale str (paramètre formel dans la méthode de classe). Il est évident que la variable locale et la variable membre ont le même nom. À l'heure actuelle, l'utilisation directe de str dans la méthode utilise en fait la variable locale str, ce qui n'a aucun effet sur la variable membre str. À ce stade, si vous devez faire quelque chose avec la variable membre, vous devez utiliser this. mot-clé.

Il y a une question. S'il n'y a pas de str dans la méthode, que se passera-t-il si la variable membre str est utilisée dans la méthode ? En fait, toutes les opérations de la méthode sont effectuées sur la variable membre str. Il y a une phrase au milieu de la page 84 de Java Programming Thoughts : Si vous appelez une autre méthode de la même classe à l'intérieur d'une méthode, vous n'avez pas besoin de l'utiliser. De même, s'il n'y a pas de variables locales et de variables membres portant le même nom dans une méthode, vous n'avez pas besoin de l'utiliser lorsque vous utilisez des variables membres dans cette méthode. Vous pouvez exécuter le code suivant pour voir.

class Demo{
    String str = "这是成员变量";
    void fun(String str1){
        System.out.println(str1);
        System.out.println(str);
    }
}
public class This{
    public static void main(String args[]){
        Demo demo = new Demo();
        demo.fun("这是局部变量");
    }
}

2. Le mot-clé this transmet l'objet actuel à d'autres méthodes

Voici un exemple très classique, qui est l'exemple de la page 85 de Java Programming Thoughts. Sortons-le et étudions-le attentivement.

class Person{
    public void eat(Apple apple){
        Apple peeled = apple.getPeeled();
        System.out.println("Yummy");
    }
}
class Peeler{
    static Apple peel(Apple apple){
        //....remove peel
        return apple;
    }
}
class Apple{
    Apple getPeeled(){
        return Peeler.peel(this);
    }
}
public class This{
    public static void main(String args[]){
        new Person().eat(new Apple());
    }
}

Quest-ce que cela signifie en Java ?

C'est ma propre compréhension. Cela n'est peut-être pas correct. Voyez ce qui est dit dans le livre : Apple doit appeler la méthode Peeler.peel(), ce qui est le cas. une méthode utilitaire externe qui effectuera une opération qui, pour une raison quelconque, doit être placée en dehors d'Apple (peut-être parce que cette méthode externe va être appliquée à de nombreuses classes différentes et que vous ne souhaitez pas dupliquer le code). Afin de se transmettre à une méthode externe, le mot-clé this doit être utilisé.

Analyse : Imaginez un scénario. Si le travail d'épluchage de toutes sortes de fruits est le même, tant que vous me donnez le fruit, je l'éplucherai de la même manière. Ensuite, combiné avec l'exemple ci-dessus, un fruit est transmis. Avant de manger getPeeled(), nous devons transmettre ce fruit en tant que paramètre au peel() externe, et l'utiliser pour se représenter et le transmettre à la méthode externe.

3. Lorsque vous avez besoin de renvoyer une référence à l'objet actuel, vous écrivez souvent return this dans la méthode

L'avantage de cette approche est : lorsque vous utiliser un objet pour appeler Cette méthode renvoie l'objet modifié et peut utiliser l'objet pour effectuer d'autres opérations. Il est donc facile d’effectuer plusieurs opérations sur un objet.

public class This{
    int i = 0;
    This increment(){
        i += 2;
        return this;
    }
    void print(){
        System.out.println("i = " + i);
    }
    public static void main(String args[]){
        This x = new This();
        x.increment().increment().print();
    }
}

Le résultat est :

4

4 Pour appeler le constructeur dans le constructeur, vous devez utiliser ceci

Une classe a plusieurs constructeurs. , parfois Si vous souhaitez appeler d'autres constructeurs dans un constructeur pour éviter la duplication de code, vous pouvez utiliser le mot clé this. Il y a un dicton dans la pensée de la programmation Java : généralement, lors de l'écriture de ceci, il fait référence à « cet objet » ou « l'objet actuel », et il représente lui-même une référence à l'objet actuel. Dans le constructeur, si une liste de paramètres y est ajoutée, elle a une signification différente. Cela entraîne un appel explicite à un constructeur qui correspond à cette liste d'arguments ; cela fournit un chemin direct pour appeler d'autres constructeurs.

Quest-ce que cela signifie en Java ?

Analyse minutieuse :

À partir de la fonction principale, new Flower() allouera de l'espace dans la mémoire et initialisera l'objet. appelez le constructeur, ici Aucun paramètre n'est écrit, bien sûr le constructeur par défaut est appelé, qui est le constructeur sans paramètre.

La première ligne de code de ce constructeur sans paramètre est this("hi",122); ce que cela signifie ici, c'est que le constructeur sans paramètre appelle le constructeur avec deux paramètres, et arrive au Pour un constructeur à deux paramètres. constructeur, la première ligne de code est this(s) ; cette ligne de code correspond automatiquement au constructeur avec un paramètre, et il s'avère que Flower(String ss) correspond, qui sont tous deux des paramètres de type String.

Appelle ensuite le constructeur avec un paramètre de type String, affiche : 只有String类型的参数的构造函数  s = hi; puis revient au niveau précédent pour appeler la fonction, qui est le constructeur à deux paramètres, affiche : 有String和int类型的参数的构造函数 ; le niveau précédent, qui est le constructeur sans paramètre, imprime : 默认构造函数.

A ce moment, le constructeur a initialisé l'objet nouvellement créé, et imprime enfin : petalCount=122  s=hi dans la dernière ligne de code de la fonction principale.

Faites un dessin pour y voir plus clairement.

Quest-ce que cela signifie en Java ?

Il y a quelques points à noter :

1 cela ne peut appeler qu'un seul constructeur, et deux constructeurs ne peuvent pas être appelés en même temps. temps. Constructeur

2. Le constructeur que vous appelez doit être placé au début. Cela explique également pourquoi vous ne pouvez pas appeler deux constructeurs dans un seul constructeur, alors le second ne doit pas être au début.

3. Dans cet exemple, dans le constructeur avec deux paramètres, vous pouvez utiliser ceci pour appeler n'importe quel autre constructeur avec un seul paramètre. Vous pouvez en appeler n'importe lequel.

4. Vous ne pouvez pas utiliser ceci pour appeler le constructeur dans une méthode autre que le constructeur. Les commentaires dans le code ne peuvent pas être compilés correctement.

Ce résumé

1. Représente une référence à l'objet courant !

2. Indique l'utilisation de variables membres de classe au lieu de paramètres de fonction.

3. Utilisé pour faire référence au constructeur qui répond au type de paramètre spécifié dans le constructeur (en fait, c'est aussi le constructeur). Mais il faut ici être très prudent : un seul constructeur peut être référencé et il doit l'être au début !

4. Évidemment, this ne peut pas être utilisé dans les méthodes statiques, car this fait référence à l'objet actuel et static n'a pas d'objet.

Site Web php chinois, un grand nombre de Tutoriels d'introduction à Java gratuits, bienvenue pour apprendre en ligne !

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