Карта / Методы / Методы

Методы

Метод — это «машинка». Даёшь ей вход (параметры) → она делает работу → возвращает результат. Назвал один раз — вызывай сколько угодно, не переписывая код.

вход (параметры) 2, 3 метод sum выход (результат) 5

Из чего состоит метод

int sum(int a, int b)
int — что вернёт sum — имя (…) — что принимает
int sum(int a, int b) {   // принимает два числа
    return a + b;         // возвращает их сумму
}

int result = sum(2, 3);   // вызов → result = 5

Если метод ничего не возвращает (просто делает) — тип возврата void:

void print(String msg) {
    System.out.println(msg);   // печатает, ничего не отдаёт
}
Копнуть глубже

Перегрузка (overloading). Можно сделать несколько методов с одним именем, но разными параметрами — Java сама выберет нужный по аргументам.

print(int n) → print(5) print(String s) → print("hi") print(int a, int b) → print(2, 3)

Параметры передаются по значению. Примитив уходит в метод копией (оригинал не изменится). Объект — копией ссылки (метод видит тот же объект в куче).

return сразу завершает метод — код после него не выполнится.

Под капотом

Каждый вызов метода кладёт фрейм на стек вызовов (call stack): там его локальные переменные и точка, куда вернуться. Метод закончился — фрейм снимается, управление возвращается назад.

Стек вызовов sum(2, 3) main() ← положили при вызове основной метод метод завершился → его фрейм снимается

Рекурсия — это когда метод вызывает сам себя. Каждый вызов кладёт новый фрейм. Если нет условия выхода — фреймы не кончаются, стек переполняется и падает StackOverflowError. Поэтому у рекурсии всегда должна быть «база» — условие, на котором она останавливается.

🎤 Закрыл тему, если можешь объяснить:
• что такое метод, параметры, return и void;
• что такое перегрузка и что параметры идут по значению (если дошёл до 2-го слоя);
• что такое стек вызовов и StackOverflowError (если дошёл до 3-го слоя).