Java Уроки: Функции с нуля — Просто и понятно

Функции – небольшие подпрограммы, содержащие определённый набор кода. Для выполнения этого кода достаточно обратиться к функции по её имени.

Зачем нужны функции?

Функции полезны для избежания повторения кода. В больших программах часто встречаются повторяющиеся фрагменты. Вместо многократного написания одного и того же кода, его можно поместить в функцию и вызывать её по мере необходимости. Это повышает читаемость и поддерживаемость кода, следуя принципу «не повторяйся сам себя».

Встроенные и пользовательские функции

В Java, как и в других языках программирования, существуют встроенные и пользовательские функции (методы). В ходе курса мы уже использовали встроенные функции, такие как print (System.out.println) или методы класса Scanner (nextLine, nextInt).

Разница между функцией и методом заключается в том, что функции объявляются вне классов, а методы – внутри. По сути, это одно и то же. Метод – это функция, объявленная внутри класса. Поскольку Java – объектно-ориентированный язык, где каждый файл представляет собой класс, в Java фактически существуют только методы. В дальнейшем термин «функция» будет использоваться как синоним термина «метод».

Создание собственного метода

Новые методы создаются на одном уровне с другими методами, например, внутри класса, но вне других методов (за исключением метода main). Пример:

public static void info() {
    System.out.println("Hello");
}
  • public – модификатор доступа (подробнее в отдельном уроке). Означает, что метод доступен отовсюду.
  • static – модификатор доступа. Означает, что метод принадлежит классу в целом, а не отдельным объектам (подробнее в отдельном уроке).
  • void – указывает, что метод ничего не возвращает.
  • info – имя метода.
  • Фигурные скобки {} определяют тело метода.

Метод сам по себе не выполняется. Его нужно вызвать:

info();
info();
info();

В этом примере метод info вызывается три раза, и три раза выводится слово «Hello».

Методы с параметрами

Усовершенствуем метод, добавив параметр:

public static void info(String word) {
    System.out.println(word + "!");
}

Теперь метод принимает строковый параметр word и выводит его с восклицательным знаком. Вызов метода:

info("Hello");
info("Java");
info(""); 

Передаются разные значения, которые обрабатываются внутри метода.

Методы, возвращающие значение

Рассмотрим метод, возвращающий сумму двух чисел:

public static int sum(short a, short b) {
    short c = (short)(a + b);
    return c;
}
  • int – указывает, что метод возвращает целое число.
  • return c; – возвращает значение переменной c.

Вызов метода и использование возвращаемого значения:

int result1 = sum((short)2, (short)10);
int result2 = sum((short)5, (short)31);
System.out.println(result1); // Выведет 12
System.out.println(result2); // Выведет 36
info(String.valueOf(result2)); // Преобразование int в String

Метод для подсчёта суммы элементов массива

Создадим метод, принимающий массив байтов и возвращающий сумму его элементов:

public static int sumArray(byte[] arr) {
    int sum = 0;
    for (byte ai : arr) {
        sum += ai;
    }
    return sum;
}

Вызов метода:

byte[] arr1 = {1, 5, 6, 8};
byte[] arr2 = {2, 10, 15, 9};

int sum1 = sumArray(arr1);
int sum2 = sumArray(arr2);

System.out.println(sum1); // Выведет 20
System.out.println(sum2); // Выведет 36

Этот пример демонстрирует эффективность использования функций для обработки данных. Повторное использование метода sumArray с разными массивами упрощает код и делает его более читаемым.

Использование функций (методов) в Java повышает качество кода, делает его более модульным, читаемым и удобным в поддержке. Функции позволяют избежать дублирования кода и упрощают разработку сложных программ. Возможность возвращать значения из функций расширяет их функциональность и делает код ещё более гибким.

Что будем искать? Например,программа