函数
一、函数的概念
函数是定义在类中的一段独立的代码块,用来实现某个功能。Java中,函数又被称为方法。
函数的主要作用是为了提高代码的复用性。
函数都是在栈内存中运行;运行的函数处在栈顶。
函数格式:
修饰符 返回值类型 函数名 ( [ 参数类型1 参数名1,参数类型2 参数名2.... ] ){
// [ ] 里面表示可选项,即参数不是必须的
执行语句...
return 返回值; //返回值的类型必须与返回值类型一致
}
说明:
修饰符:可以是访问修饰符,也可以说是函数修饰符(abstract、final、 static、synchronized),还可以是两者的组合。
返回值类型:用于限定函数返回值的数据类型。
参数类型:用于限定调用函数时传递的数据类型。
参数名:是一个变量,用来接收调用方法时传递的数据。
return:用来接收方法以及返回函数指定类型的值。
返回值:这个值会返回给函数的调用者。
class Test1{
public static void main(String[] args){
int a=10;
if(a>5){
return; //在此处结束当前函数
}
System.out.println("武汉加油");
//return;函数没有返回值 所以return可以忽略不写
}
其中,public:主函数是公开权限,它的的权限是访问权限里面最大的。
static:主函数是静态函数;
void:该函数没有返回值,它虽然没有返回值,但是它里面还是有return这个字符的,只不过不会写出来;
String[]: 表示的是一个字符串数组,切记S大写!!
args:就是这个数据类型的变量名称
二、函数的分类
可以根据有无返回值有无形式参数分为四种.
无返回值 无参
void A()
{
}
有返回值 无参
int B()//返回值为int类型
{
}
无返回值 有参
void C(int m)//接受int类型的参数 并把参数的值赋值给m
{
}
三、函数传参
实际参数(实参):就是在调用函数的时候,给函数传递的数据(常量,变量)
形式参数(形参):就是下定义函数的时候,参数列表当中的数据。
实参将什么东西传给了形参 :目前为止传的是常量在常量池的地址。之后有对象在堆内存中地址。
局部变量:但凡是在函数中创建的变量,局部变量的作用域仅仅在当前的函数当中。形式参数一定是局部变量
class Test01{
public static void main(String[] args){
int a=4;
int b=4;
double c=pow(a,b); //a b 都是实参
System.out.println(c);
}
//计算a的幂次方
public static double pow(double a,int b){ //这里的a b是 型形参
if(b==0){
return 1;
}
double sum=1;
//2^4
for(int i=1;i<=Math.abs(b);i++){
sum*=a;
}
return b>0?sum:1/sum;
}
}
函数参数传递:首先是将4的地址0x444给a b ;然后才是将a b 的地址0x444传递给pow中的a b ;当pow运行结束 将结果的地址0x256返回回来给c ,然后将c输出。
四、函数栈
函数运行时是基于栈内存运行的。栈是一种先进后出的容器结构。
我们可以将每个函数理解为函数帧,位于栈顶的函数优先运行。由于主函数是第一个进栈,所以主函数后运行。
函数中的return相当于弹栈。
举个例子:
将数字1、2、3、4、5、6存放进栈中,此时将数字在取出是最先取出的是6,其后才是5、4、3、2、1。
函数运行图解:首先主函数进栈,然后pow函数进栈。pow函数是栈顶先运行,运行结束return弹出栈,下来运行主函数。
五、函数的重载
函数的重载指的就