四、第四章——方法的基础语法、方法的重载机制、方法的递归
1 方法的基础语法
1.1 方法的引入
/*
以下程序不使用“方法”,分析程序存在哪些缺点
* 以下的代码都是完成两个int类型数据的和,相同的代码写了三遍,代码没有得到重复使用。
* 应该在java语言当中有这样的一种机身:
- 某个功能代码只需要写一遍。
- 要使用这个功能,只需要给这个功能传递具体的数据
- 这个功能完成之后返回一个最终的结果。
这样代码就可以重复利用了,提高代码复用性。 【这就是“方法】
* 使用这个方法我们称为“调用/invoke”
*/
public class MethodTest01
{
public static void main(String[] args){
//需求1:请编写程序计算10和20的和,并将结果输出
int a = 10;
int b = 20;
int c = a + b;
System.out.println(a + " + " + b + " = " + c);
//需求2:请编写程序计算111和222的和,并将结果输出
int d = 111;
int e = 222;
int f = d + e;
System.out.println(d + " + " + e + " = " + f);
//需求3:请编写程序计算10和20的和,并将结果输出
int h = 10;
int j = 20;
int m = h + j;
System.out.println(h + " + " + j + " = " + m);
//以上的三个需求其实就是一个需求,这个需求是:计算两个int类型数据的和,功能相同,只不过每一次参与计算的具体数据不同。
}
}
/*
以下直接使用方法这种机制 【这个例子不讲方法的语法】,分析程序的优点
* 代码得到了重复的使用。
方法的本质是什么?
* 方法就是一段代码片段,并且这段代码片段可以完成某个特定的功能,并且可以重复的使用。
方法,对应的英语单词:Method
方法在c语言叫做函数/Function
方法定义在类体当中,在一个类当中可以定义多个方法,方法编写的顺序没有先后顺序,可以随意
方法体当中不能再定义方法
方法体由java语句构成,方法体当中的代码遵守自上而下的顺序依次执行。
*/
public class MethodTest02
{
public static void main(String[] args){
//计算两个int类型数据的和
MethodTest02.sumInt(10, 20);
MethodTest02.sumInt(234, 22);
MethodTest02.sumInt(444, 888);
}
//单独的定义一个方法
//该方法完成计算两个int类型数据的和,并且将结果输出
public static void sumInt(int a, int b){
int c = a + b;
System.out.println(a + " + " + b + " = " + c);
}
}
1.2 方法的语法结构
1、方法怎么定义,语法结构:
[修饰符列表] 返回值类型 方法名(形式参数列表){
方法体;
}
2、对以上的语法结构进行解释说明:
2.1、关于修饰符列表
* 要选项,不是必须的
* 目前统一写成:public static 【以后讲】
* 方法的修饰符列表当中有“static关键字”的话,怎么调用这个方法?
- 类名.方法名(实际参数列表);
2.2、返回值类型
* 什么是返回值?
一个方法是可以完成某个特定功能的,这个功能结束之后大多数都是需要返回最终的执行结果的,执行结果可能是一个具体存在的数据。而这个具体存在的数据就是返回值。
* 返回值类型?
返回值是一个具体存在的数据,数据都是有类型的,此处需要指定的是返回值的具体类型。
* 返回值类型都可以指定哪些类型呢?
java任意一种类型都可以,包括基本数据类型和所有引用数据类型。
* 也可能这个方法执行结束之后不返回任何数据,java中规定,当一个方法执行结束之后不返回任何数据的话,返回值类型位置必须编写:void关键字
* 返回值类型可以是:
byte,short,int,long,float,double,char,...
* 返回值类型若不是void,表示这个方法执行结束之后必须返回一个具体的数值。当方法执行结束的时候没有返回任何数据的话编译器报错。怎么返回值呢?代码怎么写呢?"return 值;",并且要求“值”的数据类型必须和“方法的返回值类型”一致。不然编译器报错。
* 返回值类型是void的时候,在方法体当中不能编写“return 值;”这样的语句。但是可以编写“return ;”这样的语句。
* 只要带有return关键字的语句执行,return语句所在的方法结束。
2.3、方法名:
* 只要是合法的标识符就行
* 方法名最好见名知意
* 方法名最好是动词
* 方法名首字母要求小写,后面每个单词首字母大写
2.4、形式参数列表:简称形参
* 形参是局部变量:int a; double b; float c; String s;...
* 形参的个数可以是:0~N个
* 多个形参之间用“逗号”隔开
* 形参中起决定性作用的是形参的数据类型,形参的名字就是局部变量的名字。
* 方法在调用的时候,实际给这个方法传递的真实数据被称为:实际参数,简称实参
* 实参列表和形参列表必须满足:
- 数量相同
- 类型对应相同
例如:
方法定义
public static int sum(int a, int b){
}