1. 方法的定义与使用
方法最大的好处是可以进行重复调用,但是至于说那些操作要形成方法,这些都要根据实际的项目经验自我总结的。
1.1 方法的基本定义
限制条件:
本次所讲解的方法指的是在主类中定义,并且由主方法直接调用的方法形式。
- 方法就指的是一段可被重复调用的代码块。在Java中若想定义方法,可使用如下语法完成:
- public static 方法返回值 方法名称([参数类型 变量, …]) {
方法体代码;
[return [返回值];]
}
在定义方法时,对于方法的返回值有以下两类:
- public static 方法返回值 方法名称([参数类型 变量, …]) {
- void:没有返回值
- 数据类型(基本数据类型、引用类型)
范例:定义一个没有返回值,没有参数的方法
代码
public class Test{
public static void main(String args[]){
print(); // 主方法里面,直接调用方法
print(); // 主方法里面,直接调用方法
}
public static void print(){ // 方法定义
System.out.println("********************");
System.out.println("* Hello World! *");
System.out.println("********************");
}
} /* 输出结果:
********************
* Hello World! *
********************
********************
* Hello World! *
********************
*/
范例:定义一个无返回值,有参数的方法
代码
public class Test{
public static void main(String args[]){
print("Hello"); // 主方法里面,直接调用方法
print("World"); // 主方法里面,直接调用方法
print("!"); // 主方法里面,直接调用方法
}
public static void print(String msg){ // 方法定义
System.out.println(msg);
}
} /* 输出结果:
Hello
World
!
*/
范例:定义一个有返回值,有参数的方法
代码
public class Test{
public static void main(String args[]){
int sum = add(3,5) ;
System.out.println(sum);
// 既然方法有返回值,那么这些返回值也可以直接输出,如下
System.out.println(add(3,5));
}
public static int add(int x , int y){ // 方法定义
return x+y;
}
} // 输出结果:
// 8
// 8
注意:
在定义方法时,如果某一个方法上使用了void定义(无返回值),那么该方法中可以利用return来结束调用。一般而言,这种return的处理往往要结合if的判断来使用。
范例:
代码
public class Test{
public static void main(String args[]){
print(10);
print(20);
}
public static void print(int x){
if (x == 20) { // 表示方法结束的判断
return ; // 此语句之后的代码不再执行
}
System.out.println(" x = " + x);
}
} // 输出结果: x = 10
若是第一次接触,先将语法记熟,至于怎么用,需要时间消化。
1.2 方法重载(重点
)
方法重载:指的是方法名称相同,参数的类型或个数不同。
范例:实现方法重载
代码
public class Test{
public static void main(String args[]){
// 此时将根据参数的类型或个数的不同执行不同的方法体
System.out.println(add(10,20));
System.out.println(add(10,20,30));
System.out.println(add(10.1,20.2));
}
public static int add(int x,int y){
return x+y;
}
public static int add(int x,int y,int z){
return x+y+z;
// 此时方法名称相同,参数的个数不同
}
public static double add(double x,double y){
return x+y;
// 此时方法名称相同,参数的类型不同
}
}/* 输出结果:
30
60
30.299999999999997 */
在进行方法重载时,开发原则:
方法的返回值类型一定要相同!!!
范例:观察如下程序
代码
public class Test{
public static void main(String args[]){
System.out.println("hello"); // 输出字符串
System.out.println(1); // 输出整型
System.out.println(1.1); // 输出浮点型
System.out.println('A'); // 输出字符型
System.out.println(true); // 输出布尔型
}
}// 执行正确
证明出System.out.println()是一个被重载的方法。
1.3 方法递归调用(了解)
方法的递归调用指的是一个方法自己调用自己的形式。一般如果要进行方法的递归操作往往都具备以下特点:
- 方法必须有一个递归的结束条件
- 方法在每次递归处理的时候一定要做出一些变更
范例:实现一个1~100的累加操作
代码
public class Test{
public static void main(String args[]){
System.out.println(sum(100));
}
public static int sum (int num){
if (num == 1){ // 结束条件
return 1;
}
return num + sum (num - 1); // 作出变更
}
} // 5050
- 代码分析(
红字倒序看
):
- 【main()调用】第1次执行sum()方法:return 100 + sum(100-1)
返回100+99 + 98 + ··· +2 + 1
- 【sum()递归】第2次执行sum()方法:return 99 +sum(99-1)
返回99 + 98 + ··· +2 + 1
- ……
- 【sum()递归】第99次执行sum()方法:return 2 +sum(2-1)
返回2 + 1
- 【sum()递归】第100次执行sum()方法:return 1
返回1
- 【main()调用】第1次执行sum()方法:return 100 + sum(100-1)
范例:实现60!(这个结果太大了,应该使用double
)
代码
public class Test{
public static void main(String args[]){
System.out.println(fac(60.0));
}
public static double fac (double num){
if (num == 1){ // 结束条件
return 1;
}
return num * fac(num - 1); // 作出变更
}
} // 8.320987112741392E81
可以发现,使用while循环的操作大部分可以更换为递归,之所以使用递归,主要是一个方法可以执行的操作很多,而且结构要好。