- Подпрограмма - отдельно вызываемая часть программы для выполнения какой-то подзадачи - Процедура - подпрограмма, выполняющая действия - Функция - подпрограмма, вычисляющая значение - Метод - подпрограмма, связанная с классом или объектом. ```Java /* modifiers return_type name (par_type par_name) {} */ ``` - Аргументы передаются в метод по значению - Вызывающий метод кладет в стек копии значений аргументов - Внутри метода эти значения доступны по именам параметров - Если параметр примитивного типа, передается копия значения - Если параметр ссылочного типа, передается копия ссылки. - Объект при этом - в куче. Ссылку изменить нельзя, но объект иногда можно - Если метод не должен возвращать значение, то тип возвращаемого значения - void - Если метод должен возвращать значение определенного типа, то последней инструкцией метода должен быть возврат значения заданного типа с помощью return - Для параметров и возвращаемых значений действуют правила приведения типов ## Сигнатура имя функции и параметры образуют сигнатуру В сигнатуру НЕ входят: модификаторы, имена параметров, тип возвращаемого значения, тип выбрасываемого исключения ## Локальные переменные и var - Локальные переменные - объявленные внутри блоки или метода - var можно использовать для локальных переменных, которые сразу инициализируются - var нельзя использовать для массивов - var нельзя использовать для параметров метода и задания типа возвращаемого значения в заголовке метода - Тип переменной выводится компилятором из ее значения ## Переменное число аргументов - varargs ```Java void m(int a, int... x) { } // m(0) // m(0, 1, 2) // m(0, new int[]{}) ```