Одинаковые имена переменных в Java
В разных методах одного класса можно спокойно использовать одни и те же имена: у каждого метода своя область. Внутри одного метода Java не разрешает объявить переменную с тем же именем во вложенном блоке - программа не соберется.
Повторное объявление num внутри if
при уже существующем num в методе
дает ошибку компиляции:
int num = 1;
if (true) {
int num = 2; // программа не собирается
System.out.println(num);
}
System.out.println(num);
Зато локальное имя в методе может скрывать
статическое поле класса с тем же
именем. Из main на экран попадет
10, из show - 20:
public class Main {
static int num = 20;
static void show() {
System.out.println(num);
}
public static void main(String[] args) {
int num = 10;
System.out.println(num);
show();
}
}
Пока действует локальная переменная, к полю
с тем же именем из этого места не обратиться.
После выхода из метода снова используется
поле. На экран попадут 100 и 5:
public class Main {
static int score = 5;
static void bump() {
int score = 100;
System.out.println(score);
}
public static void main(String[] args) {
bump();
System.out.println(score);
}
}
Дан код:
String tag = "a";
if (true) {
String tag = "b";
System.out.println(tag);
}
System.out.println(tag);
Определите, соберется ли программа и что она выведет, если запуск возможен.
Дан код:
public class Main {
static int level = 1;
public static void main(String[] args) {
int level = 2;
System.out.println(level);
}
}
Определите, что выведет программа.