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.