Java教程
Java标识符与关键字
Java变量
Java数据类型
Java运算符
Java控制语句
Java方法
Java面向对象
Java对象的创建和使用
Java封装
Java中static和this
Java继承
Java方法覆盖和多态
Java super
Java基础练习题

Java方法的作用及本质

本章节目标:

理解方法的本质以及作用;掌握方法的定义;掌握方法如何调用;理解栈数据结构;理解方法执行过程中内存是如何变化的;掌握方法的重载机制;掌握方法递归算法。
知识框架:

Java方法的本质以及作用

我们先不讲方法是什么,先来看一段代码,分析以下程序存在哪些缺点,应该如何去改进:

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方法当中,这样会导致程序的“复用性”很差。