1.函数的定义
为什么要有函数的存在?--主要解决那些重复的具有独立功能的代码段
将这些具有独立功能的代码可以进行再次封装,封装出来的东西就是函数
优点:降低了代码冗余-复用函数即可,降低了主函数的代码量,进行适当地拆分,以便内存优化----其实也就是将函数模块化
函数格式
访问权限 函数类型 返回值类型 函数名(参数列表){
函数体
return 返回值;
}
访问权限:指的是函数的使用范围(内部和外部)--常见的关键字--public,protected, 默认, private
函数类型:指的是函数的类型分类,说的就是函数的使用场景--常见的分类--static(静态函数),默认(啥也不写,成员函数),abstract(抽象函数),native(本地函数),synchronized(同步函数)
函数名:就是程序员给这一段代码自定义的名称(标识符)
参数列表:参数列表有若干个参数类型,参数名….组成--主要用于接收外界传递给函数的一些数据
函数体:就是那些具有独立功能的代码段
return:仅表示结束当前函数,如果有返回值,则函数结束前将返回值返回给调用者
返回值:指的就是这一具有独立功能的代码块的计算结果,需要传递给外界配合
返回值类型:指的就是返回值的数据类型
注: return:发现return不在
!!!而是因为函数没有返回值 所以return可以忽略不写 不代表不存在
!!!return本身表示结束当前函数!
!!!如果函数有返回值 return 返回值; 必须写注:千万不要在函数的内部创建函数 函数必须在类里面 函数们之间是平级关系
在C/C++/Python当中 函数的定义必须在函数调用之前
在Java当中 随便 之前 之后
2.函数的分类:
有返回值有参数
有返回值无参数
无返回值有参数
无返回值无参数
注意:有返回值的函数,参与运算,输出,赋值
无返回值的函数仅仅是,仅仅是调用
3.函数传参
实际参数--实参:就是在调用函数的时候,给函数传递的数据(常量,变量)--发送端的变量
形式参数--形参:定义函数的时候,参数列表当中的数据--接收端的变量
实参将什么传给形参?--目前为止是常量在常量池中的地址
--面向对象中是对象在堆中的地址
局部变量:但凡是在函数中创建的变量,局部变量只作用于当前函数
形式参数一定是局部变量
传参过程中的按值传递:调用方法的时候是通过传值的方式将实参传给形参的;当调用带参数的方法时,实参的值传递给形参,这个过程称为按值传递。
4.函数栈--函数的运行是基于栈内存运行的--可以将每一个函数理解为子弹(函数帧)--位于栈顶的函数优先运行的--主函数一定是第一个进栈
栈是一个先进后出的容器结构
return--结束当前函数->当前函数弹栈
函数栈运行动态图解: