函数的简单定义
函数是定义在类中的一段独立的代码块,用来实现某个功能。Java中,函数又被称为方法。
函数的主要作用是为了提高代码的复用性。(也可以大致理解为重复功能代码块的集合)
函数都是在栈内存中运行,运行的函数处在栈顶。
函数构成格式
函数格式:修饰符 返回值类型 函数名 ( [ 参数类型1 参数名1,参数类型2 参数名2.... ] ){
// [ ] 里面表示可选项,即参数不是必须的
执行语句...
return 返回值; //返回值的类型必须与返回值类型一致
}
- 修饰符:可以是访问修饰符,也可以说是函数修饰符(abstract、final、 static、synchronized),还可以是两者的组合。
- 返回值类型:用于限定函数返回值的数据类型。
- 参数类型:用于限定调用函数时传递的数据类型。
- 参数名:是一个变量,用来接收调用方法时传递的数据。
- return:用来接收方法以及返回函数指定类型的值。
- 返回值:这个值会返回给函数的调用者。
函数类型
java根据方法是否带参数、是否返回值,可分为四类:
无参无返回值方法
无参带返回值方法
带参无返回值方法
带参带返回值方法
函数的分类也可以大致理解为,人们常用的语言分类,中国人用汉语,日本人用日语,西方人用英语。具体的分类是为了适应不同的情况。
同样这在程序中可以理解为定义不同的函数就是为了解决不同的问题。正因为有各种不同的问题,也才会用到不同的函数。
函数传递参数

对上面图示进行简单的解释
从图中可以看到使用到了常量4,6,8,256。系统先给这几个数在常量池中创建好相应物理地址。然后主函数中定义的变量会得到相应常量的常量地址,往下看到了pow函数,然后a和b变量作为实参就被传送到了相应的形式参数pow(a,b)中去了。这里实际上也是4和6的物理地址传到了pow函数的变量中,经过相应运算得到256这个值,同样常量池中256的物理地址就被传送给变量c中。(实际是return256的物理地址给c)
变量 c就得到了物理地址最后在对c进行输出。
上面用到了实际参数和形式参数
实际参数就是主函数调用你自己所定义函数是括号里传的变量。而形式参数就是你在定义这个函数时,所定义的变量。两者实际上传递地址。
函数栈
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。
下面是一个函数栈简单的运行过程

|