函数(function):
函数是什么?
函数就是具有名称的特定功能代码的集合。
为什么使用函数:
提高代码的复用度
Java中如何定义函数
访问修饰符 [static] 返回值的类型 函数名称([形式参数列表]) {
// 函数体 由一行或者多行代码组成
// [return 返回值](可以没有返回值 )
}
注意:在Java中,函数是定义在类中,是类的成员
函数调用:
当函数定义完成后,不会自己执行,需要通过调用来执行
函数名称([实际参数列表])
函数的分类:
-
通过函数是否存在参数
|-- 无参函数
|-- 有参函数//调用的时候需要传递参数
-
函数是否需要返回计算结果
|-- 无返回值(调用者不需要计算结果)
|-- 有返回值
局部变量:
定义在函数内部的变量,叫做局部变量,局部变量的作用域只在当前函数中有效。
注意:在Java中没有全局变量,main函数中的变量也是局部变量,只是比较特殊,作用域还是main函数本身,但是生命周期是比较长。
函数调用的本质:
函数本质是一个对象,存储在堆中
函数本质存储在堆中,当调用时,会临时的压入栈中(push),等调用完成后,会立刻弹出栈(pop),所以函数调用就是瞬时操作
函数重载
函数重载(overload):
至少两个或者更多函数,函数名称相同,但是参数的个数或者类型不同,
从而在调用的时候,可以通过传参确定要调用的函数
函数重载,本质是对功能的扩展,不是代码的复用
函数的递归(recursion):
递归:函数自身调用自身(本身是一个死循环)
如果要使用递归:必须有终止条件,没有终止条件的递归就是一个死循环!
栈溢出错误:(递归是一个压栈,调用了其他的代码)
课堂案例练习:
求第n项的斐波那契数列的值
{0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89}
f(n) = f(n-1) + f(n-2)