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
Précédent

- 171/220

Suivant