Функции (методы)

Когда программа становится больше, одних main и нескольких строк кода уже мало.
Хочется разбить задачу на аккуратные шаги: «прочитать данные», «посчитать сумму», «вывести результат» — и каждый шаг оформить отдельно.

Для этого в Java есть методы (функции внутри класса).
Метод — это именованный кусок кода, который можно вызвать по имени.

int s = sum(2, 3);   // вызов метода sum

Краткая сводка

Общий вид метода:

тип_результата имяМетода(параметры) {
    // тело метода
    return значение;  // если тип_результата не void
}

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

тип_результата переменная = имяМетода(аргументы);

Простейший пример:

static int sum(int a, int b) {
    return a + b;
}

Зачем нужны методы

Основные причины:

  • не копировать один и тот же код много раз;
  • сделать программу понятнее: каждый метод отвечает за одну маленькую подзадачу;
  • упростить отладку: ошибку легче искать в небольшом методе, чем в огромном main.

Пример без методов — всё в одном месте:

int a = in.nextInt();
int b = in.nextInt();
int c = in.nextInt();

int sum = a + b + c;
System.out.println(sum);

С методом:

static int sum3(int x, int y, int z) {
    return x + y + z;
}

// ...

int a = in.nextInt();
int b = in.nextInt();
int c = in.nextInt();

int sum = sum3(a, b, c);
System.out.println(sum);

Метод с результатом (return)

Метод может вычислить значение и вернуть его через return.

static int sum(int a, int b) {
    int s = a + b;
    return s;
}

Использование в main:

int x = 7;
int y = 5;

int s = sum(x, y);            // вызываем метод
System.out.println(s);        // 12

Здесь:

  • int перед sum — тип результата (метод возвращает int);
  • a и b — параметры (локальные имена для входных данных);
  • return s; — место, где метод отдаёт результат обратно.

Можно записать короче:

static int sum(int a, int b) {
    return a + b;
}

Важно: тип после return должен совпадать с типом результата (int здесь).


Метод без результата (void)

Иногда метод ничего не возвращает, а только что‑то делает: печатает, изменяет массив и т.п.
В этом случае вместо типа результата используется void, а return либо не пишут, либо пишут return; без значения.

static void printLine(String text) {
    System.out.println(text);
}

Вызов:

printLine("Привет");
printLine("Java");

Такой метод вызывают как отдельную команду, его нельзя присвоить переменной:

// так нельзя:
// String s = printLine("Привет");

Параметры и аргументы

В объявлении метода в скобках указаны параметры — имена для входных данных метода.

static int square(int x) {
    return x * x;
}

Вызов:

int a = 5;
int b = square(a);      // a — это аргумент

При вызове:

  • значение аргумента копируется в параметр;
  • внутри метода используется именно параметр x.

Если параметров несколько, они перечисляются через запятую:

static double average(double a, double b, double c) {
    return (a + b + c) / 3.0;
}

Примеры методов

Проверка чётности

static boolean isEven(int x) {
    return x % 2 == 0;
}

Использование:

int n = in.nextInt();

if (isEven(n)) {
    System.out.println("Чётное");
} else {
    System.out.println("Нечётное");
}

Минимум из двух чисел

static int min(int a, int b) {
    if (a <= b) {
        return a;
    } else {
        return b;
    }
}

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

static int sumArray(int[] a) {
    int sum = 0;
    for (int i = 0; i < a.length; i++) {
        sum = sum + a[i];
    }
    return sum;
}

Вызов:

int[] a = {1, 2, 3, 4};
int s = sumArray(a);
System.out.println(s);    // 10

main как пример метода

Метод main — тоже обычный метод (только со специальной сигнатурой), с которого Java начинает выполнение программы:

public static void main(String[] args) {
    // здесь начинается выполнение
}

Пока в наших программах все вспомогательные методы будут static и находиться в том же классе, что и main.
Вызывать их можно просто по имени: sum(...), isEven(...), sumArray(...).


Что нужно запомнить

Метод — это именованный кусок кода, который можно вызывать по имени:

static int sum(int a, int b) {
    return a + b;
}

Метод с типом результата (int, double, boolean и т.п.) должен возвращать значение через return.
Метод с типом void ничего не возвращает, его вызывают как отдельную команду.

Параметры — это «места» для входных данных метода, аргументы передаются при вызове.
В первых программах достаточно уметь писать простые static‑методы в том же классе, что и main, и вызывать их по имени.