Il existe deux manières de transmettre des paramètres aux sous-programmes dans les langages informatiques :
Appel par valeur : Cette méthode copie une valeur de paramètre dans un paramètre formel du sous-programme . De cette manière, les modifications apportées aux paramètres du sous-programme n'affectent pas les paramètres de l'appel à celui-ci.
Appel par référence : dans cette méthode, la référence du paramètre (plutôt que la valeur du paramètre) est transmise au paramètre du sous-programme, et dans le sous-programme, la référence est utilisée pour accéder à l'appel. paramètres spécifiés. De cette manière, les modifications apportées aux paramètres du sous-programme affecteront les paramètres du sous-programme appelant.
En Java, lorsque vous passez un type simple à une méthode, il est passé par valeur. Par conséquent, les modifications apportées aux paramètres d’un sous-programme qui reçoit des paramètres n’affecteront pas l’extérieur de la méthode. Veuillez regarder l'exemple suivant :
package toSzifucuan; class Teshks{ void meth(int i, int j) { i*=2; j/=2; } } public class CallByValue { public static void main(String[] args) { Teshks oob=new Teshks(); int a=15, b=20; System.out.println("a和b初始值:"+a+" "+b); oob.meth(a, b); System.out.println("a和b在计算后的值:"+a+" "+b); } }
Le résultat donné par le programme est :
Valeurs initiales de a et b : 15, 20
Les valeurs calculées de a et b :15,20
On peut voir que les opérations qui se produisent à l'intérieur de meth() n'affectent pas les valeurs de a et b dans l'appel.
Cela change lorsque vous passez un objet à votre méthode, puisque les objets sont passés par référence. N'oubliez pas que lorsque vous créez une variable de type classe, vous créez simplement une référence à la classe. Par conséquent, lorsque vous transmettez cette référence à une méthode, le paramètre qui l’accepte pointe vers le même objet que celui vers lequel pointe le paramètre. Il s'agit d'une preuve solide que l'objet est transmis à la méthode via un appel de référence. Les modifications apportées aux objets dans cet objet affectent l'objet en tant que paramètre. Par exemple :
package toSzifucuan; class Teshks{ int a, b; public Teshks(int i, int j) { a=i; b=j; } void meth(Teshks oo) { oo.a*=2; oo.b/=2; } } public class CallByValue { public static void main(String[] args) { Teshks oob=new Teshks(15,20); System.out.println("a和b初始值:"+oob.a+" "+oob.b); oob.meth(oob); System.out.println("a和b在计算后的值:"+oob.a+" "+oob.b); } }
Le résultat imprimé par ce programme est :
Valeurs initiales de a et b : 15, 20
Les valeurs calculées de a et b : 30, 10
Dans cet exemple, les opérations dans meth() affectent l'objet en tant que paramètre.
Lorsqu'une référence d'objet est transmise à une méthode, la référence elle-même est transmise à l'aide d'un appel par valeur. Cependant, étant donné que la valeur transmise pointe vers un objet, la copie de la valeur pointe toujours vers le même objet que celui vers lequel pointe son argument correspondant.
Remarque : utilisez le passage par valeur lorsque vous transmettez un type simple à une méthode. Les objets sont passés par référence.
Le site Web PHP chinois propose un grand nombre de tutoriels d'introduction JAVA gratuits, tout le monde est invité à apprendre !
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!