函数(function):
函数是什么?
函数就是具有名称的特定功能代码的集合。
为什么使用函数:
提高代码的复用度
Java中如何定义函数
访问修饰符 [static] 返回值的类型 函数名称([形式参数列表]) {
// 函数体 由一行或者多行代码组成
// [return 返回值]
}
注意:在Java中,函数是定义在类中,是类的成员
函数调用:
当函数定义完成后,不会自己执行,需要通过调用来执行
函数名称([实际参数列表])
函数的分类:
|-- 通过函数是否存在参数
|-- 无参函数
|-- 有参函数
|-- 函数是否需要返回计算结果
|-- 无返回值
|-- 有返回值
不容忽视的“小陷阱”:
1、 如果方法的返回类型为 void ,则方法中不能使用 return 返回值!
2、 方法的返回值最多只能有一个,不能返回多个值。
3、 方法返回值的类型必须兼容,例如,如果返回值类型为 int ,则不能返回 String 型值。
局部变量:
定义在函数内部的变量,叫做局部变量,局部变量的作用域只在当前函数中有效。
注意:在Java中没有全局变量,main函数中的变量也是局部变量,只是比较特殊,
作用域还是main函数本身,但是生命周期是比较长。
函数调用的本质:
函数本质是一个对象,存储在堆中
函数本质存储在堆中,当调用时,会临时的压入栈中(push),
等调用完成后,会立刻弹出栈(pop),所以函数调用就是瞬时操作
函数重载(overload):
至少两个或者更多函数,函数名称相同,但是参数的个数或者类型不同,
从而在调用的时候,可以通过传参确定要调用的函数
特点:与返回值类型无关,只看参数列表(参数的个数、参数的类型、参数的顺序)。
若参数个数不同但类型相同,则重载的代码可以重用,因为重载功能相似。例:
package shape;
public class Sum {
public static int add(int a, int b) {
return a+b;
}
//通过调用另一个重载函数实现重载
public static int add(int a, int b, int c) {
return add(a,b)+c;
}
public static void main(String[] args) {
System.out.println(add(56,12));
System.out.println(add(5,78,98));
}
}
函数重载,本质是对功能的扩展,不是代码的复用!!!!
函数的递归(recursion):
递归:函数自身调用自身
如果要使用递归:必须有终止条件,没有终止条件的递归就是一个死循环!!