本章节目标:
理解方法的本质以及作用;掌握方法的定义;掌握方法如何调用;理解栈数据结构;理解方法执行过程中内存是如何变化的;掌握方法的重载机制;掌握方法递归算法。
知识框架:
我们先不讲方法是什么,先来看一段代码,分析以下程序存在哪些缺点,应该如何去改进:
public static void main(String[] args) {
//请计算10和20的和
int a = 10;
int b = 20;
int c = a + b;
System.out.println(a + "+" + b + "=" + c);
//请计算666和888的和
int x = 666;
int y = 888;
int z = x + y;
System.out.println(x + "+" + y + "=" + z);
//请计算888和999的和
int m = 888;
int n = 999;
int e = m + n;
System.out.println(m + "+" + n + "=" + e);
}
以上代码完成了三个求和的功能,每一次求和的时候都把代码重新写了一遍,显然代码没有得到“重复利用”,表面上看是三个功能,但实际上只是“一个”求和功能,只不过每一次参与求和的实际数值不同。java中有没有一种方式或者语法,能让我们把功能性代码写一次,然后给这个功能性代码传递不同的数据,来完成对应的功能呢?答案是:当然有。这就需要我们掌握java语言中的方法机制,接下来大家看看改进之后的代码(这里先不需要掌握方法是怎么定义的以及怎么调用的,只要看以下代码就行,此小节是为了让大家理解方法的本质以及作用):
public static void main(String[] args) {
//调用求和方法计算10和20的和
sumInt(10 , 20);
//调用求和方法计算666和888的和
sumInt(666 , 888);
//调用求和方法计算888和999的和
sumInt(888 , 999);
}
//专门负责求和的方法
public static void sumInt(int a , int b){
int c = a + b;
System.out.println(a + "+" + b + "=" + c);
}
运行结果如下图所示:
图7-1:求和结果
通过以上程序我们可以看出,其实方法也没什么神秘的,方法其实就是一段普通的代码片段,并且这段代码可以完成某个特定的功能,而且可以被重复的调用/使用。java中的方法又叫做method,在C语言中叫做函数。
从现在开始大家以后在写代码的时候就要有定义方法的意识了,只要是可以独立出来的功能,我们都可以定义为单独的一个方法来完成,如果以后需要使用此功能时直接调用这个方法就行了,不要把所有的代码都扔到main方法当中,这样会导致程序的“复用性”很差。