Бесплатный курс по java. Зарегистрируйтесь для отслеживания прогресса →

Java: Окружение

Какое значение окажется внутри переменной result после выполнения кода?

public static void main(String[] args) {
  var age = 5;
  var result = generate();
}

static int generate() {
  return age + 3;
}

Правильный ответ: код не скомпилируется, компилятор выдаст ошибку, потому что внутри метода нет переменной с именем age, но метод пытается его использовать.

Метод не имеет доступа к переменным, объявленным в других методах.


Рассмотрим другой пример:

public static void main(String[] args) {
  var age = 5;
  var result = generate();
}

static int generate() {
  var age = 10;
  return age + 3;
}

Переменная age в main() изнутри generate() недоступна, она не мешает объявлению переменной с таким же именем в generate() - но это будет уже другая переменная. Метод generate() будет под именем age видеть свою переменную, а main() - свою.

В данном случае результатом будет число 13....age = 5 никак не влияет на код метода.

Задание

Это задание не связано напрямую с уроком, это просто еще одно полезное упражнение по работе с методами.

Напишите метод getAgeDifference(), который принимает два года рождения и возвращает строку с разницей в возрасте в виде The age difference is 11.

Как обычно, метод нужно сделать public static, а не просто static, чтобы мы смогли вызвать его из другого класса.


Советы

  • Напомним, что в Java есть метод Math.abs(), которая возвращает модуль переданного числа: например, Math.abs(-12) вернёт 12.


Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Если вы столкнулись с трудностями и не знаете, что делать, задайте вопрос в нашем большом и дружном сообществе