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

Java: Методы и их вызов

Как вы заметили, для каждой операции требуется свой собственный символ (оператор): для сложения чисел и конкатенации строк — +, для деления чисел — /, и так далее. Такой подход оправдан только для самых частых операций, ведь в реальной жизни есть тысячи разных задач. К тому же, даже если бы язык программирования включал в себя тысячу разных операторов, в какой-то момент программисту понадобился бы новый.

Любой язык программирования позволяет расширять набор операций. Такие новые операции в Java называются «методами». Давайте сначала научимся пользоваться уже созданными методами, а уже потом будем создавать новые методы.

Аналогично функции в математике, в Java метод - это некое преобразование, которое применяется к каким-то значениям (например, к числам или тексту) и даёт некий результат. Значения, которые получает метод, называют его аргументами, а результат - возвращаемым значением. Так, метод для взятия меньшего из двух чисел сравнивает их, и своим результатом назначает то число, которое меньше.

В Java существует огромное количество методов и для удобства они объединены в классы. Например, методы для работы с числами и математическими вычислениями реализованы в классе Math.

Чтобы воспользоваться методом, его вызывают в нужной части программы. Для вызова нужно указать имя класса, в котором находится метод, поставить символ ., записать имя метода, а после имени указать (). Скобки нужны для того, чтобы в них записать аргументы.

В Java есть метод для нахождения минимального числа из двух. Вызовем его:
java
var result = Math.min(1, 5); // 1

Мы создали переменную result и записали в неё результат, который вернет метод Math.min(). Запись Math.min(1, 5) означает, что вызывается метод с именем min() из класса Math с аргументами (или с параметрами) 1 и 5. Вызванный метод вернул значение 1, поэтому в result в итоге оказалось значение 1.

Аргументы или параметры — это информация, которую метод получает при вызове. Именно на основе этой информации метод, как правило, вычисляет что-то и выдает результат. Количество аргументов метода может меняться в зависимости от потребностей метода. Например, для Math.min() мы указали два аргумента, когда вызывали его выше, а для метода charAt() достаточно будет одного. А вот пример метода, который не принимает аргументов:

var result = "Hello world!".length(); // 12

Метод length() возвращает длину строки.

Вы, вероятно, заметили сходство между вызовом Math.min() и вызовом System.out.println(). Дело в том, что System.out.println() тоже метод, только он не возвращает никакого значения. Чаще всего методы вызывают, чтобы использовать возвращаемые ими значения, но иногда (про это впереди будет урок про побочные эффекты) метод вызывают ради чего-то другого, что этот метод делает в процессе вычисления результата, в случае System.out.println() метод в процессе своей работы выводит переданный ему аргумент в консоль, и именно ради этого побочного эффекта мы его и вызываем.

Вы можете создавать собственные методы — мы займёмся этим в следующем модуле. Любое действие, которое вы себе можете вообразить, в Java представлено методами.

Задание

В 7 королевствах жил один человек, который имел доступ к компьютерам и умел программировать — Сэм Тарли. Он занимался картографией, поэтому он написал для себя метод calculateDistance, высчитывающий расстояние (в лигах) между городами. Метод принимает два строковых параметра — названия двух городов, и возвращает число — расстояние между ними. Любой метод в java относится к какому-то классу, свою Сэм отнес к классу Functions.

Вот пример использования, где на экран выводится расстояние между Lannisport и Bayasabhad:

var distance = Functions.calculateDistance("Lannisport", "Bayasabhad");
System.out.println(distance);

Сэм написал свой метод в отдельном классе, поэтому мы перед названием метода указываем название класса, в котором определен этот метод.

Этот код запускает вычисление метода calculateDistance().

Воспользуйтесь методом calculateDistance() и выведите на экран расстояние между городами 'Qarth' и 'Vaes Dothrak'. Не копируйте пример, а создайте переменную с другим именем и напишите код с нуля самостоятельно.


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