下边的程序实现了代码的重用,在main方法中调用两次sum方法,我们发现不管调用多少次,sum方法只有一个,sum方法中的代码被重用了。
/**
* 面向过程编程-方法定义
* @author 攀博课堂(www.pbteach.com)
*/
public class FunctionDemo1 {
public static void main(String[] args) {
//调用sum方法
sum();
//调用sum方法
sum();
}
public static void sum() {
// 定义变量,存放累加值
int sum = 0;
// 实现1到10的累加
for (int x = 1; x <= 10; x++) {
sum = sum + x;
}
System.out.println(sum);
}
}
仔细分析sum方法的功能是什么?
sum方法实现了求1到 10之间数的累加和。如何实现求1到 100之间数的累加和呢?那就需要再写一个sum2方法,实现求1到 100之间数的累加和,方法的内容类似下边的代码:
public static void sum2() {
// 定义变量,存放累加值
int sum = 0;
// 实现1到100累加
for (int x = 1; x <= 100; x++) {
sum = sum + x;
}
System.out.println(sum);
}
sum2方法和sum方法的方法体内容基本相同,只是for的关系表达式不一样,一个是x <= 10,一个是x <= 100。
其实,我们可以把sum方法的功能定义的更通用一些,sum方法实现1到 n之间数据的累加和,n的值是在调用sum方法时传给sum方法的,当传入了10那么sum方法实现了求1到 10之间数的累加和,当传入100则实现求1到 100之间数的累加和,如下图:
在main方法中共调用sum方法两次,第一次调用sum方法将10传入sum方法,第二次调用sum方法将100传入sum方法。
代码如下:
/**
* 面向过程编程-方法定义
* @author 攀博课堂(www.pbteach.com)
*
*/
public class FunctionDemo2 {
public static void main(String[] args) {
//调用sum方法,传入10,求1到 10之间数的和
sum(10);
//调用sum方法,传入100,求1到 100之间数的和
sum(100);
}
public static void sum(int n) {
// 定义变量,存放累加值
int sum = 0;
// 实现1到10的累加
for (int x = 1; x <= n; x++) {
sum = sum + x;
}
System.out.println(sum);
}
}
sum方法定义了参数int n,运行上边的程序实现了求1到10之间数的和,以及求1到 100之间数的和,程序输出如下:
55
5050
参数是如何传入sum方法呢?在main方法中执行sum(10)是如何将10传入sum方法的?下图是参数传递流程:
执行sum(10)即调用sum方法,此时在内存开辟sum方法区,将sum方法的参数n在方法区开辟一个变量空间,执行sum(10),由于sum方法有参数,编译器将10赋值给sum方法区的变量n,sum方法的参数n称为形参(形式参数),10称为实参(实际参数)。
执行sum(100)的过程和执行sum(10)类似,同样会在内存开辟sum方法区,在方法区开辟变量空间n,编译器将实参100赋值给sum方法的形参n。