La règle générale de Java est que les arguments sont passés par
valeur. Cela signifie que l’appel de méthode se fait par copie des
valeurs passées en argument et que chaque appel de méthode dispose de
sa propre version des paramètres. On doit noter que Java est ici
parfaitement cohérent : si une méthode f
possède un
argument int x
, alors l’appel f(2)
revient à créer, pour
la durée de l’exécution de cet appel une nouvelle variable (de
nom x
) qui est initialisée à 2
.
Examinons un exemple.
L’appel de dehors(0)
se traduira par l’affichage de trois
lignes i=0
, i=2
, i=0
. C’est très semblable à
l’exemple sur la structure de bloc. Ce qui compte c’est la portée des
variables.
Le résultat est sans doute moins inattendu si on considère cet autre
programme rigoureusement équivalent :
Mais ce que l’on doit bien comprendre c’est que le nom de l’argument
de dedans
, i
ou j
n’a pas d’importance, c’est une
variable muette et heureusement.
La règle du passage des arguments par valeur s’applique aussi aux objets, mais alors c’est une référence vers l’objet qui est copiée. Ceci concerne en particulier les tableaux.
L’affichage est le suivant:
Ce qui illustre bien qu’il n’y a, tout au cours de l’exécution du
programme qu’un seul tableau, a
, t
étant juste des noms
différents de ce même tableau.
On peut aussi renommer l’argument t
en a
ça ne change
rien.