/**
* 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);
}
}