Java函数调用:常规函数和匿名函数
Java是一种面向对象的编程语言,它支持函数(方法)的定义和调用。在Java中,函数可以分为常规函数和匿名函数两种类型。
常规函数
常规函数是在程序中定义好的,具有一个固定的函数名和参数列表,并且返回一个特定类型的值或者不返回任何值。定义函数时,需要指定函数的返回类型、函数名和参数列表。例如,下面是一个常规函数的示例:
public static int add(int a, int b) {
return a + b;
}
该函数的函数名为“add”,参数列表包括两个整型变量a和b,它们的值会在函数被调用时传递进来。函数体内的语句执行完毕后,函数通过return语句返回一个整型值,返回值的类型与函数定义时指定的返回类型一致。在函数被调用时,可以通过函数名和参数列表进行调用:
int res = add(3, 4); System.out.println(res); // 输出 7
在上面的代码中,调用“add”函数并将传入的参数值为3和4相加后,返回值被赋值给了一个整型变量res,最后输出res的值。
匿名函数
匿名函数,也称为Lambda函数,是一种在Java语言中引入的函数式编程概念,它相对于常规函数有几个不同之处。
首先,匿名函数本身不具备名称,而是直接通过代码块来定义。其次,匿名函数常用于对某些特定数据集合进行操作,因此往往伴随着“函数式接口”的概念。函数式接口是指定义了 一个抽象方法的接口,Lambda表达式可以被赋值给这种接口类型的变量,并且Lambda表达式的形参和返回值类型必须与该方法的参数列表和返回类型一致。
例如,下面是一个匿名函数的示例:
interface MathOperation {
int operate(int a, int b);
}
public static void main(String[] args) {
MathOperation add = (int a, int b) -> a + b;
System.out.println(add.operate(3, 4)); //输出7
}
在上面的代码中,我们首先定义了一个函数式接口MathOperation,它只有一个抽象方法operate。在main函数中,我们使用Lambda表达式对该接口进行了实现,该Lambda表达式的形参为两个整型变量a和b,返回值为两者之和。最后,我们通过对象add来调用operate方法,即可输出结果。
在匿名函数中,还有一些常用的特殊语法轻量化写法,例如:
- 如果形参只有一个,可以省略小括号。例如:a -> a * a
- 如果代码块只有一行语句,可以省略大括号和return语句。例如:(a, b) -> a + b
总结
Java中的函数可以分为常规函数和Lambda函数。常规函数是在程序中定义好的,具有一个固定的函数名和参数列表,并且返回一个特定类型的值或者不返回任何值。Lambda函数则是匿名的,直接通过代码块来定义,并且常常用于对数据集合进行操作。在Lambda函数中,需要遵守函数式接口的约束,Lambda表达式的形参和返回值类型必须与该方法的参数列表和返回类型一致。在使用Lambda函数时,还可以采用特殊语法轻量化写法,如省略小括号和大括号等。
