Функции в Java
Last updated: 3 мая 2025 г.Рассмотрим функции (также называют методами).
До этого мы уже употребляли некоторые функции например println() для вывода строки в консоль, replace для замены символов в строке и т.д.
Очевидно, что функция это что-то, что выполняет какое-то действие с чем-то.
Также очевидно, что все процессы, которые выполняют это действие (то есть код, который реализует эти процессы, которые выполняют это действие) скрыты от наших глаз.
То есть в программе мы просто написали название функции, передав ей какие-либо аргументы (аргументы это то, что передается функции в круглых скобочках () ) и она выполняет то или иное действие.
И эту функцию можно таким образом вызывать много раз по ходу программы.
К примеру, представьте, что мы вызвали функцию equals много раз по ходу программы.
А теперь представьте если бы для сравнения двух строк на каждом месте где вызывается эта функция мы бы писали не вызов equals, а то, что внутри equals, то есть код, который реализует процессы сравнения двух строк и собственно выполняет сравнение двух строк, то есть код, который под капотом у equals, а этот код это не одна строчка кода, и очевидно, что на каждом месте где у нас раньше был вызов equals, эти строчки кода из equals будут повторяться. Что очевидно не есть хорошо. Вызов функции это одна строчка кода, а то что у нее под капотом это много строчек кода. Лучше повторять одну строчку кода, чем повторять много строчек кода.
И здесь очевиден смысл функций!!
Вынося код в функцию, а не многократно повторяя его по ходу программы мы уменьшаем количество повторяющегося кода, что ясное дело делает его намного читабельнее.
Более наглядно в программе.
1class Test
2{
3 public static void main(String []args)
4 {
5 String b = "Some text info!";
6 String c = "Some text info!";
7 String d = "Some text inrwgf!";
8 if(b.equals(c)) { //Если бы здесь,
9 System.out.println("b and c are equal strings!");
10 }
11 System.out.println(b.equals(c));// здесь,
12 System.out.println(c.equals(d));// и здесь,
13 //для сравнения строк вместо вызова equals был бы
14 //код, который под капотом у функции equals
15 //то очевидно было бы много повторяющегося кода кода.
16 }
17}
Создание функции
Создадим функцию (метод), которая будет находить среднее арифметическое трех чисел (то есть сложить три числа, а потом разделить результат на количество этих чисел, то есть разделить на три в нашем случае) и выводить на консоль это среднее арифметическое.
В примере программы ниже создана функция для нахождения среднего арифметического трех чисел.
Пока не обращайте внимание на слова static и void, их разберем позже.
averageOf3Nums
– это имя нашей функции (по аналогии с функцией equals у которой equals – это имя функции).
По этому имени, также как и с equals, будем вызывать нашу функцию для нахождения ср. арифметического
В скобочках через запятую определяем аргументы, которые будут передаваться в функцию – какого они типа и сколько их. Как видим, это будут три числовых значения.
Внутри же этой функции находиться код который реализует процессы нахождения среднего арифметического трех чисел. Который выполняет действия над переданными в нее числовыми аргументами для поиска их среднего арифметического.
Поясним на примере.
1class Test
2{
3 static void averageOf3Nums(int a, int b, int c) {
4 int sum = a + b + c; // сложить 3 числа
5 int resultAverage = sum / 3; // поделить на их количество
6 System.out.println(resultAverage); // вывести на консоль ср. ар.
7 }
8
9 public static void main(String[] args)
10 {
11 // Теперь используем функцию, определенную выше.
12 // Ниже вместо a будет подставляться 6,
13 // вместо b будет подставляться 9, а вместо c будет подставляться 34.
14 // И все действия, которые выполняются с a, b, c
15 // в функции выше, будут выполняться с 6, 9, 34.
16 // В результате в функции в переменной resultAverage
17 // окажется среднее арифметическое чисел 6, 9, 34
18 // и будет произведен вывод на консоль этого resultAverage.
19 averageOf3Nums(6, 9, 34);
20
21 // Вызовем еще пару раз с другими числами.
22 averageOf3Nums(9, 44, 11);
23 averageOf3Nums(3, 12, 4);
24 }
25}
Вывод:

Код выше можно было бы переписать без функции.
1class Test
2{
3 public static void main(String []args)
4 {
5 int sum, resultAverage;
6 sum = 6+9+34; // сложить 3 числа
7 resultAverage = sum/3; // поделить на их количество
8 System.out.println(resultAverage); // вывести на консоль
9
10 sum = 9+44+11;
11 resultAverage = sum/3;
12 System.out.println(resultAverage);
13
14 sum = 3+12+4;
15 resultAverage = sum/3;
16 System.out.println(resultAverage);
17 }
18}
Вывод:

То о чем мы говорили. Видим очень много повторяющегося кода, что плохо, так как вместо одной строчки каждый раз пишем три.
Возвращаемое значение функции
Рассмотрим возвращаемое значение функции
.
Помним, что equals возвращало true или false.
То есть результатом выполнения функции equals является boolean
значение.
Наша же функция averageOf3Nums возвращала void
(то ключевое слово, которое перед именем).
Это значит, что функция не должна возвращать ничего. И она ничего и не возвращала, она просто выполняла некоторые вычисления и потом вызывала функцию println для вывода результата вычислений на консоль.
То есть уже можно догадаться, что ключевое слово перед именем функции это тип возвращаемого функцией значения.
Поясним на примере.
1class Test {
2 // Ниже функция, которая возвращает число типа int (так как int перед именем)
3 static int averageOf3Nums(int a, int b, int c) {
4 int sum = a + b + c;
5 int resultAverage = sum / 3;
6 // Действительно, resultAverage — это число типа int
7 // Мы ключевым словом return возвращаем это число как результат функции
8 return resultAverage;
9 }
10
11 public static void main(String[] args) {
12 // Мы уже не можем просто вызвать функцию, как ниже,
13 // так как это ни к чему не приведет. Число, которое возвращает
14 // функция, должно быть куда-то применено
15 averageOf3Nums(6, 9, 34);
16
17 // Например, мы можем записать это число в переменную
18 int average = averageOf3Nums(6, 9, 34);
19
20 // И передать ее в функцию для вывода на консоль
21 System.out.println(average);
22
23 // В результате на консоли увидим среднее арифметическое
24 }
25}
Вывод:

Следующие уроки
Область видимости в Java
5
мин.
Что такое ООП? Класс, объект.
13
мин.
Конструктор класса
9
мин.