Классы в Java содержат методы и поля – переменные класса. Методы имеют параметры, а внутри методов возможно определение локальных переменных. Требования к именам переменных – стандартные, как и в других языках программирования. Кроме того не допускается объявление переменных с одинаковыми именами. Так, например, следующий код будет считаться ошибочным.
int n; { int n; // нельзя }
У каждой переменной есть область видимости, т.е. та область программы, в которой возможна работа с этой переменной. Таким образом у переменных с одинаковыми именами не должны пересекаться области видимости.
В Java объявление локальных переменных возможно в любом месте метода. При этом областью видимости переменной будет тот блок, в котором она определена (под блоком подразумевается код, помещённый в фигурные скобки {}). Поэтому допустимо написать следующий код, т.к. у переменных n разные области видимости.
{ int n; } int n; // можно
У параметров область видимости – весь метод. У полей область видимости – весь класс, однако возможно создавать локальные переменные с именем, совпадающим с именем поля. В этом случае после определения данное имя будет связано именно с переменной, а не с полем класса. Это крайне не рекомендуется делать, т.к. такое определение будет создавать некоторую двусмысленность восприятия кода и может способствовать появлению ошибок.