课堂思考题(数据类型转换):
byte a = 10;
byte b = 20;
a += 10; // a = 20
b = b + 10; // b = 30
函数(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)
一个人开始上楼梯,假设这个人每一次只能上一个或者两个台阶
当他到达第n个台阶时,问:共有多少种走法?
f(n) = f(n-1) + f(n-2)