函数
函数概述
函数主要解决那些具有 重复性 的且有 独立功能 的代码块,将这些代码块进行抽取,生成函数,方便后 期调用,并且解决了代码冗余的问题。
Java当中函数的语法格式:
权限修饰符:表示的是该函数的调用权限 public protected 默认不写 private
函数类型修饰符:static 静态函数;native 本地函数;abstract 抽象函数;synchronized 同步函数
返回值类型:就是函数计算的结果,如果需要向调用者返回,则标记为计算结果的数据类型(向下兼容);如果不需要返回,则写成void
函数名:对于该功能的描述命名
参数列表:就是外界传给函数的一些数据,这些数据一般称之为是形式参数,外界传递的数据称之为是实际参数
函数体:就是那段具有独立功能的代码块
return:仅仅表示函数结束!如果有返回值,则在return之后写上;如果没有返回值,return之后不写返回值,那么return隐藏不写!
返回值:就是函数计算的结果
函数分为四种形式:
有参有返回 有参无返回 无参有返回 无参无返回
如何去设计一个函数
考虑函数的功能
考虑函数是否接受数据
考虑是否有计算结果
考虑结果是否返回
函数内存运行原理
函数的运行是基于栈的,每一个函数都是栈中的元素,我们把这个元素称之为栈帧(栈帧主要包含的是
函数所有的字节码信息,如果在极端情况下一个栈帧过于太大,则导致栈结构存不下,导致栈内存溢出
异常 StackOverFlowError;如果栈帧进入的过多,也会导致栈内存存不下,栈内存溢出),一般第一个
进栈的栈帧是主函数,一个栈帧一旦进入到栈里面,则开始逐行执行,如果在执行的过程中,又调用了
其他函数,此时当前栈帧暂停运行,新函数的栈帧进栈,开始逐行运行,直到运行完毕遇到return则弹
栈,当前栈顶的栈帧继续执行。
函数的重载
什么是函数的重载,重载的意思就是,一个类中,出现多个重名函数的情况。
重载有什么用,保留了函数的声明,只不过是对应的参数不一样而已。
函数的递归
第一种层面的理解:从函数内存运行角度而言,递归其实就是指函数在调用函数自身
第二种层面的理解:从算法角度而言,递归就是指自动推理和推导的过程(数学归纳法)
在算法领域当中,最常用的两大算法思想,迭代(for while循环),递归