第四章:函数

函数的定义

1.函数的存在意义

函数是主要解决重复的且具有独立功能的代码段,将这些具有独立功能的代码可以进行再次封装,封装出来的东西称为函数。降低了代码冗余复用函数,降低了主函数的代码量,将主函数进行适当的拆分,以便内存的优化。就是将函数模块化。

2.函数格式

访问权限 函数类型 返回值类型 函数名(参数列表){ 

   函数体

  return 返回值;

}

访问权限:指的就是函数的使用范围( public protected 默认不写 private)

函数类型:指的就是函数类型分类,就是函数的具体使用场景和场合(static静态函数 默认不写成员函数 abstract 抽象函数 native 本地函数 synchronized 同步函数)

函数名:就是这一段代码自定义的名称(标识符)

参数列表:参数列表有若干个 参数类型,参数名…组成,主要用于接收外界传递给函数的一些数据。

函数体:就是那些具有独立功能的代码块。

return:仅仅表示结束当前函数,如果有返回值,则函数结束前将返回值返回给调用者。

返回值:指的就是这一具有独立功能的代码块的结算结果,需要传递给外界,配合return使用。

返回值类型:返回值的数据类型(可兼容性)。

目前为止,定义函数时,只需要考虑(返回值类型 函数名 参数列表 函数体 返回值)

注意事项:不要在函数的内部创建函数,函数必须在类里面,函数们是平级关系,在C/C++/Python中,函数的定义必须在函数调用之前。在Java中,之前之后都可以。

3.函数传参

实际参数-实参:在调用函数的时候,给函数传递的数据。(常量或者变量)

形式参数-形参:定义函数的时候,参数列表中的数据。

实参是将什么东西传递给了形参:目前为止,传的是常量在常量池的地址。在面向对象中,传的也有对象在堆内存的地址。

局部变量:但凡是在函数中创建的变量,称之为局部变量。局部变量的作用域仅仅在当前的函数当中。形式参数一定是局部变量。

4.函数栈

函数的运行是基于栈内存的,栈是一个先进后出的容器结构。(如弹夹,先压进去的子弹最后打出)可以将每一个函数理解为子弹(函数帧),位于栈顶的函数帧优先运行的主函数绝对是第一个进栈的。

第四章:函数