一.函数概述
概述:
1.函数是定义在类中的一段独立的代码块,用来实现某个功能。
Java中,函数又被称为方法。
2.函数的主要作用是为了提高代码的复用性。
3.函数都是在栈内存中运行;运行的函数处在栈顶。
二.函数格式
格式:
修饰符 返回值类型 函数名 ( [ 参数类型1 参数名1,参数类型2 参数名2… ] ){
执行语句…
return 返回值;
}
项 | 作用 |
---|---|
修饰符 | 可以是访问修饰符,也可以说是函数修饰符(abstract、final、 static),还可以是两者的组合。 |
返回值类型 | 用于限定函数返回值的数据类型。 |
参数类型 | 用于限定调用函数时传递的数据类型。 |
参数名 | 是一个变量,用来接收调用方法时传递的数据。 |
return | 用来接收方法以及返回函数指定类型的值。 |
返回值 | 这个值会返回给函数的调用者。 |
三.函数的原理
1.函数调用过程中,函数调用方和函数自己就如何存放和使用这些数据达成一个一致的协议或约定。这个约定在各种计算机系统中都是类似的,存放这些数据的内存有一个相同的名字,叫栈。
2.栈是一块内存,但它的使用有特别的约定,一般是先进后出,往栈里添加数据称为入栈,最下面的栈称为栈底,最上面的栈称为栈顶,从栈顶拿出数据通常称为出栈。栈一般是从高位地址向低位地址扩展,栈底的内存地址是最高的,栈顶的是最低的。
3.计算机系统主要用栈来存放函数调用过程中需要的数据,包括参数,返回地址,以及函数内定义的局部变量。返回值不太一样,它可能放在栈中,但它使用的栈和局部变量不完全一样,有的系统使用CPU内的一个存储器来存储返回值,我们可以简单的认为存在一个专门的返回值存储器。main函数的相关数据放在栈的最下面,每调用一次函数,都会将相关函数的数据入栈,调用结束会出栈。
四.函数的重载
函数的重载是指,在同一个类中,可以定义多个函数名相同、参数列表不同的函数。
参数名相同,参数个数不同,参数列表不同均属于函数重载的情况。注意,函数的重载和返回值类型无关。
调用时通过函数名和参数列表来确定一个函数。
函数的重载与函数的返回值无关,函数的函数名相同,参数的个数,类型不同或参数列表的顺序不同。
五.函数的递归
函数的递归是指在一个函数的内部调用自身的过程。
递归必须要有结束条件,不然就是陷入无限递归的状态,永远无法结束函数的调用。
函数的递归的优点:
1.迭代能做的它也能做,不能做的它也能做。
2.递归代码少
3.简化问题,理清思路
缺点:
1.消耗内存太大,原因:压栈,栈内的内存不能及时释放,持续堆积容易栈溢出