方法的基本概念
方法的主要功能是封装可以执行的一段代码,这样不仅可以进行重复调用,更可以方便的实现代码的维护,而本次使用的方法定义语法如下所示。
public static 返回值类型 方法名称(参数类型 参数变量, ...) {
方法体(本方法要执行的若干操作) ;
[return [返回值] ;]
}
在本定义格式之中,发现方法有一个返回值类型,指的是这个方法返回结果,对于此类的类型可以有两种:
直接设置Java中的数据类型(基本数据类型、引用数据类型),
- 如果方法设置了返回值,那么必须使用return语句返回与之数据类型对应的数据;
- 方法没有返回值:void,可以不使用return返回内容,但是可以使用return结束方法调用。
定义一个没有参数没有返回值的方法
public class TestDemo {
public static void main(String args[]) {
printInfo(); // 直接调用方法
printInfo(); // 直接调用方法
}
/**
* 信息输出操作
*/
public static void printInfo() { // 定义没有参数,没有返回值的方法
System.out.println("*********************");
System.out.println("* www.yootk.com *");
System.out.println("*********************");
}
}
程序执行结果:
*********************
* www.yootk.com *
*********************
*********************
* www.yootk.com *
*********************
定义一个有参数无返回值的方法
public class TestDemo {
public static void main(String args[]) {
pay(10.0); // 调用方法
pay(-10.0); // 调用方法
}
/**
* 定义一个支付的操作方法,如果支付金额大于0则正常支付,否则会输出错误提示信息
* @param money 要支付的金额
*/
public static void pay(double money) { // 购买支付操作
if (money > 0.0) { // 现在已经给钱
System.out.println("可以进行支付!");
} else { // 不能够支付
System.out.println("你穷疯了,没钱还买东西!");
}
}
}
程序执行结果: 可以进行支付!(“pay(10.0)”调用执行)
你穷疯了,没钱还买东西!(“pay(-10.0)”调用执行)
定义有返回值有参数的方法
public class TestDemo {
public static void main(String args[]) {
int result = add(10, 20); // 方法的返回值可以进行接收
System.out.println("计算结果:" + result);
System.out.println("计算结果:" + add(50, 60)); // 也可以直接将方法返回值进行输出
}
/**
* 实现数据的加法操作
* @param x 操作数字一
* @param y 操作数字二
* @return 返回两个数字的加法计算结果
*/
public static int add(int x, int y) { // 有参数有返回值的方法
return x + y; // 返回加法计算结果
}
}
程序执行结果:
计算结果:30
计算结果:110
利用return结束方法调用
如果在方法中执行return语句,那么就表示其之后的代码不再执行而直接结束方法调用,如果此时方法有返回值声明,那么必须返回相应类型的数据,如果没有返回值声明,则可以直接编写return。而此类操作一般都会结合分支判断一起使用。
public class TestDemo {
public static void main(String args[]) {
set(100); // 正常执行输出
set(3); // 满足方法判断条件,会中断输出操作
set(10); // 正常执行输出
}
/**
* 定义一个设置数据的操作方法,如果该数据为3将无法设置
* @param x 要设置的数据内容
*/
public static void set(int x) { // 方法声明为void
if (x == 3) { // 判断语句
return; // 方法后面的内容不执行了
}
System.out.println("x = " + x);
}
}
程序执行结果:
x = 100
x = 10
方法的重载
方法重载指的是方法名称相同,参数的类型或个数不同,调用的时候将会按照传递的参数类型和个数完成不同的方法体的执行。
如果说现在有一个方法名称,有可能要执行多项操作,例如:一个add()方法,它可能执行两个整数的相加,也可能执行三个整数的相加,或者可能执行两个小数的相加,那么在这样的情况,很明显,一个方法体肯定无法满足于要求,需要为add()方法定义多个不同的功能实现,所以此时就需要方法重载概念的支持。
观察方法重载
public class TestDemo {
public static void main(String args[]) {
// 方法重载之后执行时会根据传入参数的类型或个数的不同调用不同的方法体
System.out.println("两个整型参数:" + add(10, 20));
System.out.println("三个整型参数:" + add(10, 20, 30));
System.out.println("两个浮点型参数:" + add(10.2, 20.3));
}
public static int add(int x, int y) { // add()方法一共被重载三次
return x + y;
}
public static int add(int x, int y, int z) { // 与之前的add()方法的参数个数不一样
return x + y + z;
}
public static double add(double x, double y) { // 与之前的add()方法的参数类型不一样
return x + y;
}
}
方法的递归调用
递归调用是一种特殊的调用形式,指的是方法自己调用自己的形式,但是在进行递归操作的时候必须满足如下的几个条件:
- 必须有结束条件;
- 每次调用的时候都需要改变传递的参数。
public class TestDemo {
public static void main(String args[]) {
System.out.println(sum(100)); // 1 - 100累加
}
/**
* 数据的累加操作,传入一个数据累加操作的最大值,而后每次进行数据的递减,将一直累加到计算数据为1
* @param num 要进行累加的操作
* @return 数据的累加结果
*/
public static int sum(int num) { // 最大的内容
if (num == 1) { // 递归的结束调用
return 1; // 最终的结果返回了一个1
}
return num + sum(num - 1); // 递归调用
}
}
程序执行结果:
5050