Функция – это фрагмент кода, который может быть полезен для повторного использования определенного кода. Функция также полезна для разбиения большой логики в коде на множество частей, чтобы создать код, который легко понять. Это базовый синтаксис для создания функции в Java.
modifier static_type return_value func_name(params) { // code.. }
Существует два основных типа функций, включая функцию void, которая не имеет возвращаемого значения, и функцию с возвращаемым значением.
Функция Void
Функция Void – это функция, которая не возвращает никакого значения. Базовый синтаксис выглядит следующим образом.
modifier static_type void func_name(params) { // code.. }
Это пример использования функции void.
public class MyApp { public static void main(String[] args) { // call a function called sum and printGreeting sum(14,15); printGreeting(); } // create a new function without any params public static void printGreeting() { System.out.println("Hello World!"); } // create a new function to calculate the sum of two integers public static void sum(int a, int b) { int result = a + b; System.out.println("The result is: " + result); } }
Выход
The result is: 29 Hello World!
Основываясь на приведенном выше коде, две функции, вызываемые sum()
и print Greeting()
, являются статическими функциями. эти функции объявлены как static
, потому что эти функции выполняются внутри main()
функции, которая имеет ключевое слово static
. В принципе, функция static
может быть выполнена внутри другой функции static
.
Переменные аргументы или параметры также доступны в Java, эти переменные аргументы можно использовать, чтобы избежать функции и функции, которая имеет возвращаемое значение. Это основной синтаксис для создания переменных аргументов.
data_type ... arg_name
Это пример использования переменных аргументов для вычисления суммы целых чисел.
public class MyApp { public static void main(String[] args) { // call a function called sum with variadic args sum(14,15); sum(14,15,16,17); sum(1,2,3,4); } // create a new function to calculate the sum of many integers public static void sum(int ... nums) { int result = 0; // calculate the sum using for each for (int tmp: nums) { result += tmp; } System.out.println("The result is: " + result); } }
Выход
The result is: 29 The result is: 62 The result is: 10
Основываясь на приведенном выше коде, переменные аргументы в данном случае проиллюстрированы в виде списка целых чисел. Аргумент num
может быть повторен с помощью foreach
для вычисления суммы многих целых чисел.
Переменные аргументы должны располагаться в последнем из аргументов
// true implementation public static void average(int size, int ... nums) { } // false, throw an error public static void average(int ... nums, int size) { }
Функция с возвращаемым значением
Функция также может иметь возвращаемое значение. Это базовый синтаксис функции с возвращаемым значением.
modifier static_type return_type func_name(params) { // code.. }
Это пример использования функции с возвращаемым значением.
public class MyApp { public static void main(String[] args) { // create a array of integers int[] nums = {1,2,3,4,5}; // call the average function int avgResult = average(nums); // print out the result System.out.println("Average result: " + avgResult); } public static int average(int[] nums) { // perform average calculation int result = 0; for (int tmp: nums) { result += tmp; } return result / nums.length; } }
Выход
Average result: 3
Основываясь на приведенном выше коде, функция average()
возвращает int
, что возвращаемое значение хранится внутри переменной avgResult
с типом int
.
Функции перегрузки
Перегрузка функций – это функция с тем же именем, но с другим количеством аргументов или параметров внутри функции. Пример выглядит следующим образом.
// these functions has a same name called "greet" // without args public static void greet() { System.out.println("Hello World!"); } // with one argument public static void greet(String name) { System.out.println("Hello, " + name + "!"); } // with two arguments public static void greet(String name, int age) { System.out.println("Hello, " + name + "!"); System.out.println("Your age is: " + age + " years old."); }
Статическая и Нестатическая функция
Статическая функция – это функция, которая может быть вызвана внутри static
function. Статическая функция – это функция, доступная для использования без создания объекта или экземпляра определенного класса. Примером функции static
является функция, доступная в классе Math
. эти функции доступны в Math
class без создания объекта Math
class.
// call a pow() function directly from Math class Math.pow(3,2);
Нестатическая функция – это функция, доступная для использования при создании объекта или экземпляра определенного класса. Это пример нестатической функции с именем sum()
в классе с именем Calculator
.
// create a class called Calculator class Calculator { // create a fields of integers int numOne; int numTwo; // create a constructor public Calculator(int numOne, int numTwo) { this.numOne = numOne; this.numTwo = numTwo; } // create a non static function to calculate the sum public int sum() { return numOne + numTwo; } } public class MyApp { public static void main(String[] args) { // create an object of Calculator Class Calculator calculator = new Calculator(2,3); // call the sum function from the calculator object System.out.println("The sum result: " + calculator.sum()); } }
Выход
The sum result: 5
Основываясь на приведенном выше коде, функция sum()
доступна только в том случае, если создан объект класса Calculator
.
Лямбда
Лямбда – это анонимная функция, которая может быть использована для выполнения определенной операции. Это базовый синтаксис lambda в Java.
// The expression's result is directly returned. The complex logic is not allowed. (param) -> expression // With two parameters, The expression's result is directly returned. // The complex logic is not allowed. (param1, param2) -> expression // With two parameters, The code block may contains complex logic. // Use return keyword if the code block is returning the value. (param1, param2) -> { code block }
Это пример использования лямбды в ArrayList
для умножения каждого вставленного значения на 2.
import java.util.ArrayList; import java.util.List; public class MyApp { public static void main(String[] args) { // create a new list of integers Listnumbers = new ArrayList<>(); // add some integers numbers.add(1); numbers.add(2); numbers.add(3); // using lambda function numbers.forEach((num) -> System.out.println(num * 2)); } }
Выход
2 4 6
Основываясь на приведенном выше коде, функция forEach()
использует лямбда-функцию для умножения значения на 2 и вывода результата. Это лямбда-функция, которая использовалась в этом коде.
(num) -> System.out.println(num * 2)
Рекурсивная функция
Рекурсивная функция в основном доступна во многих языках программирования, включая Java. Рекурсивная функция – это функция, которая вызывается внутри своей собственной функции. Некоторую проблему можно решить с помощью рекурсивной функции, включающей вычисление последовательности Фибоначчи. Проверьте эту ссылку , чтобы узнать больше о последовательности Фибоначчи.
public class MyApp { public static void main(String[] args) { int result = fibonacci(5); System.out.println(result); } // using recursive function public static int fibonacci(int num) { if (num <= 2) // base case return 1; else // recursive case return fibonacci(num - 1) + fibonacci(num - 2); } }
Выход
5
Основываясь на приведенном выше коде, в рекурсивной функции есть два основных компонента. Компоненты являются базовым регистром и рекурсивным регистром. Базовый вариант в основном предназначен для определения того, когда рекурсивное выполнение прекращается. Рекурсивный случай – это операция, которая выполняется до базового случая.
Это иллюстрация того, как работает функция фибоначчи()
.
При использовании рекурсивной функции убедитесь, что входные данные не слишком велики, чтобы избежать исключения переполнения стека.
Источники
Узнайте больше о переменных аргументах в Java по этой ссылке /. Узнайте больше о статическом ключевом слове по этой ссылке
Документацию по лямбда-функции можно проверить здесь .
Я надеюсь, что эта статья будет полезна для изучения языка программирования Java. Если у вас есть какие-либо мысли или комментарии, вы можете написать в разделе обсуждения ниже.
Оригинал: “https://dev.to/nadirbasalamah/java-tutorial-5-function-1cef”