La portée de la déclaration d'un nom de variable locale s'étend dans le bloc où ce nom est déclaré, depuis sa déclaration jusqu'à la fin du bloc :
{ { int n = 2; } p = n; // hors de la portée de la déclaration précédente }
Notons qu'il est illégal de déclarer une variable locale de même nom qu'un paramètre, de déclarer plusieurs fois la même variable locale dans un même bloc ou dans un bloc imbriqué, et cela même si les types sont distincts :
static void f(int x) { char x = 'a' // ILLÉGAL : x est déjà un paramètre int n = 3; int n; // ILLÉGAL : n est déjà une variable locale { double n = 4; // ILLÉGAL : n est déjà une variable locale } }
Un même nom peut apparaître à plusieurs endroits dans un programme : on parle des occurrences de ce nom. Il y a une et une seule occurrence de déclaration, dans sa portée, et zéro ou plusieurs occurrences d'utilisation. Quand on voit une occurrence d'utilisation d'un nom, il faut pouvoir remonter à sa déclaration :
int n = 2; // déclaration de n // ... p = 3*n + 1; // utilisation de n