第三章 方法
方法(Method,在很多语言中也被称为“函数”)指的是一段可以被重复调用的代码块,利用方法可以实现庞大程序的拆分,是一种代码重用的技术手段,并且更加适合于代码维护。
3.1 方法基本定义
public static 返回值类型 方法名称(参数类型 参数变量, ....) {
方法体(本方法要执行的操作);
[return [返回值];]
}
方法定义中的返回值与传递的参数类型均为Java中定义的数据类型(基本数据类型、引用数据类型),在方法中可以进行返回数据的处理,如果要返回数据则可以使用return,return所返回的数据类型与方法定义的返回值类型相同,如果不返回数据,则该方法可以使用void进行声明。
范例:定义一个无参数接收并且无返回值的方法
public class JavaDemo {
public static void main(String[] args) {
printInfo();
}
public static void printInfo() {
System.out.println("**************");
System.out.println("www.baidu.com");
System.out.println("**************");
}
}
范例:定义一个有参数有返回值的方法
public class JavaDemo {
public static void main(String[] args) {
String str = payAndGet(20.2);
System.out.println("str = " + str);
}
public static String payAndGet(double money) {
if (money >= 10.0) {
return "钱够了";
} else {
return "钱不够";
}
}
}
在方法中return语句除了可以返回处理结果之外,也可以结合分支语句实现方法的结束调用。
范例:使用return结束方法调用
public class JavaDemo {
public static void main(String[] args) {
sale(20);
}
public static void sale(int amount) {
if (amount > 0) {
return; //如果数量出现错误,后续代码就不执行了
}
System.out.println(amount);
}
}
如果传入的参数不满足条件时,可以使用return结束方法的调用。
3.2 方法重载
方法重载是方法名称进行重用的一种技术形式,其最主要的特点为“方法名称相同,参数的类型或个数不同”,在调用时会根据传递的参数类型和个数不同执行不同的方法体。
范例:定义方法重载
public class JavaDemo {
public static void main(String[] args) {
int sum = sum(10, 20);
int sum1 = sum(10, 20, 30);
System.out.println("sum = " + sum);
System.out.println("sum1 = " + sum1);
}
/**
* 两个整型加法计算
* @param x
* @param y
* @return
*/
public static int sum(int x, int y) {
return x + y;
}
/**
* 实现三个整数加法的计算
* @param x
* @param y
* @param z
* @return
*/
public static int sum(int x, int y, int z) {
return x + y + z;
}
/**
* 实现两个double型数据相加
* @param x
* @param y
* @return
*/
public static int sum(double x, double y) {
return (int)(x + y);
}
}
注意:方法重载时考虑到标准性一般都建议统一返回值类型。
3.3 方法递归调用
递归调用是一种特殊的调用形式,指的是方法自己调用自己的形式,如图4-3所示,但是在进行递归操作的时候必须满足以下的几个条件。
- 递归调用必须有结束条件。
- 每次调用的时候都需要根据需求改变传递的参数内容。
范例:实现1~100数字的累加
public class JavaDemo {
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);
}
}
范例:计算1!+ 2!+ 3!+ 4!+ 5!+ …+ 90!
public class JavaDemo {
public static void main(String[] args) {
System.out.println(sum(90));
}
/**
* 实现阶乘数据的累加操作
* @param num
* @return
*/
public static double sum(int num) {
if (num == 1) {
return factorial(1);
}
return factorial(num) + sum(num - 1);
}
/**
* 定义方法实现阶乘计算
* @param num 根据传入的数字实现阶乘
* @return 阶乘结果
*/
public static double factorial(int num) {
if (num == 1) {
return 1;
}
return num * factorial(num - 1);
}
}