Функция – это фрагмент кода, который может быть полезен для повторного использования определенного кода. Функция также полезна для разбиения большой логики в коде на множество частей, чтобы создать код, который легко понять. Это базовый синтаксис для создания функции в 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
List numbers = 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”