Je suis un débutant en programmation Java et j'ai quelques problèmes pour comprendre certains concepts. Je voudrais savoir si les deux implémentations sont les mêmes:
Code 1
public class MyThisTest {
private int a;
public MyThisTest(int b) {
a = b;
}
Code 2
public class MyThisTest {
private int a;
public MyThisTest(int a) {
this.a = a;
}
3 Réponses :
Oui, les deux implémentations sont identiques. Mais je vous recommande vivement de lire en détail à ce sujet afin que vous ne fassiez aucune erreur future. Cette réponse va en détail quand nous devrions utiliser this .
Oui, les deux sont identiques, voyons pourquoi:
Première
public class MyThisTest {
private int a;
public MyThisTest(int b) {
a = b;
}
Vous utilisez this pour désigner la variable membre a . L'utilisation de this est parce que par paramètre il y a a autre variable. Si vous ne l' utilisez pas this que variable sera attribuée la valeur? Identique au paramètre, donc il ne prend pas effet car il "attribue automatiquement" la valeur.
Word, this garantit que la variable membre est référencée. Ceci est principalement utilisé dans les constructeurs et les getter / setters car le nom du paramètre doit être le même que le nom de la variable membre, donc pour gérer l'ambiguïté, this est utilisé.
Le deuxième code
public class MyThisTest {
private int a;
public MyThisTest(int a) {
this.a = a;
}
Dans le constructeur il n'y a pas d' ambiguïté entre les variables, donc this n'est pas nécessaire, mais vous pouvez toujours utiliser this et il fonctionne parfaitement.
ce mot-clé serait ajouté par le compilateur. En fait, si vous écrivez quelque chose comme ça
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
public class A {
private int a;
public A(int b) {
this.a = b;
}
}
Compilez puis décompilez-le, vous pouvez voir le travail du compilateur
public class A {
private int a;
public A(int b) {
a = b;
}
}
Donc, je dirais qu'éviter cela n'est qu'une utilisation de certains sucres de syntaxe.
Oui, les deux sont identiques.
L'utilisation principale de
thisest de lever l'ambiguïté des références de variables. Voyez quand l'utiliser .@jarmod C'est exactement ce que je voulais savoir. Merci!
@jarmod une utilisation secondaire de
thisest lorsque vous êtes un débutant et que vous voulez que l'EDI vous aide avecCtrl+Space(ou suis-je le seul à avoir fait cela ...)