static void tableau(int[] tab)
{
tab[1]=12345;
}
public static void main(String[] args) {
int[] t={2,7,9,10,11,14,17,18,20,22};
int[] copie;
copie=t;
System.out.println(t[2]);
copie[2]=5;
System.out.println(t[2]);
tableau(t);
System.out.println(t[1]);
}
}
Vous reconnaissez l’un des exemples du chapitre Les tableaux et structures. Il lui a été rajouté une fonction
"tableau" qui prend comme paramètre un tableau d’entiers. Les lignes en gras constituent la principale modification
de l’exemple. Le tableau t est passé en paramètre de la fonction tableau. Dans cette fonction, le paramètre est
modifié : l’indice 1 du tableau tab reçoit la nouvelle valeur 12345. Après la fin de la fonction, le programme réaffiche le
contenu de l’indice 1 du tableau passé en paramètre : il contient 12345.
En Java, les tableaux, structures, chaînes, qui sont en fait des objets, donc tous les objets, sont passés par
défaut par référence aux fonctions. C’est à vous de faire très attention lorsque vous modifiez le contenu de ces
types de variables dans la fonction.
c. Les types primitifs
Si on passe en paramètre une valeur d’un type de base dit primitif comme un entier par exemple à une fonction, il est
cette fois passé par copie. Aussi si vous voulez modifier définitivement la valeur passée en paramètre, l’une des
méthodes est de retourner la bonne valeur. Dans l’exemple suivant, au premier appel la variable v n’est pas modifiée,
tandis qu’au second elle reçoit sa nouvelle valeur par retour de la fonction modif_int.
class chap8_ref2 {
static int modif_int(int var)
{
var=10;
return var;
}
public static void main(String[] args) {
int v=0;
modif_int(v);
System.out.println(v);
v=modif_int(v);
System.out.println(v);
}
}
En Java, tous les types primitifs (int, long, float, double, char) sont passés par copie aux fonctions, c’estàdire
que le paramètre de la fonction reçoit une copie du contenu de la variable, et non pas une référence. Donc
pour tous ces types, la variable initialement passée en paramètre ne perd pas sa valeur : vous la retrouvez en
sortant de la fonction. Il est impossible de créer une référence sur un type primitif.
Les développeurs Java ne se sont jamais plaints de cet état de fait, conscients que tout ceci facilite grandement la
programmation et la syntaxe. Alors qu’en C ou C++ il faut faire attention avec des déclarations pas simples, ici tout
est fait par défaut. D’autres langages comme le PHP en version 5 ont repris ce principe.
d. Références sur structures
- 9 -
© ENI Editions - All rigths reserved - Jonifar lina
171
{
tab[1]=12345;
}
public static void main(String[] args) {
int[] t={2,7,9,10,11,14,17,18,20,22};
int[] copie;
copie=t;
System.out.println(t[2]);
copie[2]=5;
System.out.println(t[2]);
tableau(t);
System.out.println(t[1]);
}
}
Vous reconnaissez l’un des exemples du chapitre Les tableaux et structures. Il lui a été rajouté une fonction
"tableau" qui prend comme paramètre un tableau d’entiers. Les lignes en gras constituent la principale modification
de l’exemple. Le tableau t est passé en paramètre de la fonction tableau. Dans cette fonction, le paramètre est
modifié : l’indice 1 du tableau tab reçoit la nouvelle valeur 12345. Après la fin de la fonction, le programme réaffiche le
contenu de l’indice 1 du tableau passé en paramètre : il contient 12345.
En Java, les tableaux, structures, chaînes, qui sont en fait des objets, donc tous les objets, sont passés par
défaut par référence aux fonctions. C’est à vous de faire très attention lorsque vous modifiez le contenu de ces
types de variables dans la fonction.
c. Les types primitifs
Si on passe en paramètre une valeur d’un type de base dit primitif comme un entier par exemple à une fonction, il est
cette fois passé par copie. Aussi si vous voulez modifier définitivement la valeur passée en paramètre, l’une des
méthodes est de retourner la bonne valeur. Dans l’exemple suivant, au premier appel la variable v n’est pas modifiée,
tandis qu’au second elle reçoit sa nouvelle valeur par retour de la fonction modif_int.
class chap8_ref2 {
static int modif_int(int var)
{
var=10;
return var;
}
public static void main(String[] args) {
int v=0;
modif_int(v);
System.out.println(v);
v=modif_int(v);
System.out.println(v);
}
}
En Java, tous les types primitifs (int, long, float, double, char) sont passés par copie aux fonctions, c’estàdire
que le paramètre de la fonction reçoit une copie du contenu de la variable, et non pas une référence. Donc
pour tous ces types, la variable initialement passée en paramètre ne perd pas sa valeur : vous la retrouvez en
sortant de la fonction. Il est impossible de créer une référence sur un type primitif.
Les développeurs Java ne se sont jamais plaints de cet état de fait, conscients que tout ceci facilite grandement la
programmation et la syntaxe. Alors qu’en C ou C++ il faut faire attention avec des déclarations pas simples, ici tout
est fait par défaut. D’autres langages comme le PHP en version 5 ont repris ce principe.
d. Références sur structures
- 9 -
© ENI Editions - All rigths reserved - Jonifar lina
171
