/** * Exemple du troisième cours, ou « Pourquoi on ne peut pas échanger * le contenu de variables primitives passées en paramètres à une fonction * */ public class Ex3 { /* * Une tentative de fonction d'échange... * Elle échange bien, mais le contenu de ses paramètres formels qui ne sont * reliés pas aux paramètres effectifs sauf dans la phase d'initialisation */ public static void echange(int x, int y) { System.out.println("x="+x+" y="+y); int t = x; x = y; y = t; System.out.println("x="+x+" y="+y); } /* * Une fonction qui tente de modifier un paramètre... Ca ne marche pas * puisque les paramètres formels ne représentent pas les paramètres effectifs * mais ne sont que d'autres variables qui ont été initialisées avec les * valeurs des paramètres effectifs. */ static public void f(int a) { System.out.println("a="+a); a = a+100; System.out.println("a="+a); } public static void main(String []args) { int x = 10; /* x ne change pas à travers l'appel */ System.out.println("x="+x); f(x); System.out.println("x="+x); int a = 1; int b = 2; System.out.println("a="+a+" b="+b); /* un code permettant d'zchanger le contenu de deux variables (en * en utilisant une troisième */ int t = a; a = b; b = t; /* et non, un tel échange n'est pas possible via un appel de fonction */ System.out.println("a="+a+" b="+b); echange(a,b); System.out.println("a="+a+" b="+b); } }