Lors de l'appel de la méthode, les paramètres peuvent être donnés sous forme de valeurs ("litterals") comme dans les exemples précédents, ou sous forme d'une variable :
class MethodeAvec2Parametres{ static void traceLigne(int longueur,char signe){ for (int i=0;i<longueur;i=i+1){ System.out.print(signe); } System.out.println(); } public static void main(String[] args){ char s='A'; for (int i=1;i<30;i=i+2){ traceLigne(i,s); } } }
Le nom donné aux variables lors de l'appel de la méthode est complètement indépendant du nom qui leur est donné dans l'en-tête de méthode. Ce qui importe, c'est que leur type soit correct.
Les noms utilisés dans l'en-tête de méthode et dans le code de la méthode sont inaccessibles depuis l'extérieur de la méthode.
class MethodeAvec2Parametres{ static void traceLigne(int longueur,char signe){ for (int i=0;i<longueur;i=i+1){ System.out.print(signe); } System.out.println(); } public static void main(String[] args){ char signe='A'; for (int longueur=1;longueur<30;longueur=longueur+2){ traceLigne(longueur,signe); } } }Dans l'exemple ci-dessus on appelle la méthode traceLigne en utilisant les mêmes noms de variable que dans sa définition, et cela ne pose pas de problème: en interne ces noms désignent des emplacement mémoire différents.