方法的基本用法
基本语法:
//方法定义
public static 方法返回值 方法名称 ([参数类型 形参 ...]) {
方法体代码;
[return 返回值];
}
//方法调用
返回值变量 = 方法名称(实参...);
//代码示例:实现一个方法实现两个整数相加
class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
//方法的调用
int ret = add(a,b);
System.out.println("ret = " + ret);
}
//方法的定义
public static int add(int x, int y) {
return x + y;
}
}
//执行结果
ret = 30
注意事项:
- public和static两个关键字在此处有特定含义,必须编写
- 方法定义时,参数可以没有,每个参数必须要指定类型
- 方法定义时,返回值也可以没有,没有返回值时,返回值类型写成void
- 与C语言中函数类似,方法定义时的参数为"形参",方法调用时参数为"实参"
- 方法的定义必须在类之中,代码书写在调用位置的上下均可
- Java中没有"函数声明"这样的概念
- 当方法被调用的时候,会将实参赋值给形参,对于基础类型来说,形参相当于实参的拷贝,即传值调用
- 参数传递完毕后,就会执行到方法体代码
方法的重载
//代码示例
class Test {
public static void main(String[] args) {
int a1 = 10;
int b1 = 20;
int ret1 = add(a1,b1);
System.out.println("ret1 = " + ret1);
double a2 = 10.5;
double b2 = 20.5;
double ret2 = add(a2,b2);
System.out.println("ret2 = " + ret2);
double a3 = 10.5;
double b3 = 10.5;
double c3 = 20.5;
double ret3 = add(a3,b3,c3);
System.out.println("ret3 = " + ret3);
}
public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}
public static int add(double x, double y, double z) {
return x + y +z;
}
}
方法的名字都叫add,但是有的add是计算int相加,有的是double相加;有的是两个数相加,有的是三个数相加。同一个方法名字,提供不同版本的实现,就称为方法重载。
重载规则: 方法名相同,方法的参数不同(类型或者个数),方法的返回值类型不影响重载。当两个方法的名字相同,参数也相同,但是返回值不同的时候,不构成重载。
方法的递归
一个方法在执行过程中调用自身,就称为"递归"
//代码示例:递归求N的阶乘
public static void main(String[] args) {
int n = 5;
int ret = factor(n);
System.out.println("ret = " + ret);
}
public static int factor(int n) {
if (n == 1) {
return 1;
}
return n * factor(n - 1);//factor调用方法自身
}
//执行结果
ret = 120
递归是一种重要的编程解决问题的方式,有些问题天热就是使用递归方式定义的(例如斐波那契数列,二叉树等),此时使用递归来解就很容易,有些问题使用递归和非递归(循环)都可以解决,那么就推荐使用非递归,相比于递归,非递归程序更加高效。