什么是函数
函数就是定义在类中的具有特定功能的一段独立小程序,并能被多次使用。
如何定义一个功能呢?
- 应该是一个封闭的区间。就是需要使用大括号将其封装。
- 需要给这个区间起个名字,以后通过这个名字来调用这个区间
- 这个区间需要有参与运算的数据
- 需要定义该功能的结果类型
函数的格式
权限修饰符 函数类型修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...) {
执行语句;
return 返回值;
}
- 权限修饰符:指的就是函数的使用范围(内部和外部)
- 函数类型:函数类型分类,说明函数的具体使用场景和场合
- 函数名
- 参数列表:参数列表有若干个 参数类型,参数名… 组成 主要用于接收外界传递给函数的一些数据
- 函数体:就是那些具有独立功能的代码块
- return:仅仅表示结束当前函数,如果有返回值,则函数结束前将返回值返回给调用者
- 返回值:指的就是这一具有独立功能的代码块的计算结果,需要传递给外界配合return
- 返回值类型:就是返回值的数据类型(可兼容)
如何定义函数
函数就是一个功能,功能就需要两部分:
- 函数运行时有位置参数吗?
- 函数运行完的结果是什么?
例子:最大值判断max()函数
import java.util.Scanner;
public class DEMO {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("输入一个数:");
int x1 = input.nextInt();
System.out.println("输入另外一个数:");
int x2 = input.nextInt();
int k = max(x1,x2);
System.out.println(x1 + "与" + x2 + "中数值最大的是" + k);
}
public static int max(int num1,int num2) {
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
}
函数的运行原理
每当调用一个方法时,系统会创建一个活动记录(也成为活动框架),用于保存方法中的参数和变量。活动记录置于一个内存区域中,称为调用堆栈(call stack)。调用堆栈也称为执行堆栈、运行时堆栈,或者一个机器堆栈,常简称为“堆栈”。当一个方法调用另一个方法时,调用者的活动记录不动,一个新的活动记录杯创建用于被调用的新方法。一个方法结束返回到调用者时,其相应的活动记录也被释放。
函数重载在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可,这时就形成了重载。重载与返回值类型无关。
void show(int a,float b,char c){}
比方说下列函数和给定函数重载的关系
- a.int show(int x,float y,char z) //没有重载,这个函数不允许和给定函数存在同一个类中。因为会产生调用的不确定性,也就是说系统会不知道改用那个函数,在这两个之中不确定。
- b.void show(folat b,int a,char c) //重载了,参数类型不同
- c.void show(int c,float a,char b) //没有重载,和给定函数一样,不允许存在。
与权限没关系,与返回值类型没关系,与参数没关系 ,只有和参数类型的排列组合有关系(注意一下,参数类型的向下兼容问题)
重载的好处就在于我们可以扩展函数的功能(函数重名,但是参数类型不一样,执行内容也可以不一样)。
举个例子,就是从1加到100,利用函数,像俄罗斯套娃一样,一直利用函数及其返回值,相加,最后求得值。
还有就是斐波那契数列也是同样的问题。
这是属于分治法,算法的思想,将大问题进行拆分,拆分成若干个小问题进行求解,最后在把所有小问题进行合并。。。



