方法(重载,可变参数,递归)
什么是方法
方法是语句的集合,执行一个功能,一般一个方法只完成一个功能。
方法的命名规则是首字母小写然后驼峰命名规则。
void是返回为空的意思。
public class Demo01 {
public static void main(String[] args) {
int sum = add(1,2);
System.out.println(sum);
}
public static int add(int a,int b){
return a+b;
}
}
方法的定义和调用
一般格式:
修饰符 返回值类型 方法名(参数类型 参数名)
{
方法体
return 返回值
}
调用方法:对象名.方法名(实参列表)
根据是否返回值来选择调用方法:
-
若方法返回一个值,则调用通常被当作一个值,如
int sum = add(1,2);
-
若返回值是void,则一定返回一条语句
方法重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数。就是一个类中可以有无限函数名字相同,但参数不同。注意以下:
- 方法名称一定相同
- 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)
- 方法的返回类型可以相同也可以不同
- 仅仅返回类型不同不足以成为方法的重载
public static int add(int a,int b){
return a+b;
}
public static double add(double a,double b){
return a+b;
}
命令行传参
在运行一个程序时再传递给它消息。这要靠传递命令行参数给main()函数实现。
可变参数
也叫做不定项参数。重载太多会麻烦。
Java支持传递多个同类型的可变参数给一个方法。
要在方法声明中,在指定参数类型后加一个省略号。
一个方法中只能有一个可变参数,也必须是方法的最后一个参数
public class Demo02 {
public static void main(String[] args) {
Demo02 demo02 = new Demo02();
demo02.printMax(1,3,23,54,32);
}
public void printMax(double...numbers){
double result = numbers[0];
for (int i=1;i < numbers.length;i++) {
if(result<numbers[i]){
result = numbers[i];
}
}
System.out.println("Max is :"+result);
}
}
递归
A方法调用A方法自己,包括两部分:
- 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
- 递归体:什么时候需要调用自身方法。
public class Java03 {
public static void main(String[] args) {
Java03 D = new Java03();
int result = D.test(4);
System.out.println(result);
}
public int test(int n){
if(n==1){
return 1;
}else{
return n*test(n-1);
}
}
}
以上就是计算4的阶乘。
编程实现费氏数列
费氏数列:1 1 2 3 5 8 13 21 …
ublic class FeeTest {
int show(int n){
if(n==1||n==2){
return 1;
}else{
return show(n-1)+show(n-2);
}
}
public static void main(String[] args) {
FeeTest t = new FeeTest();
int s = t.show(4);
System.out.println(s);
}
}
但是使用递归方式有时候内存的消耗会很大