方法(重载,可变参数,递归)

方法(重载,可变参数,递归)

什么是方法

方法是语句的集合,执行一个功能,一般一个方法只完成一个功能。

方法的命名规则是首字母小写然后驼峰命名规则。

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 返回值

}

调用方法:对象名.方法名(实参列表)

根据是否返回值来选择调用方法:

  1. 若方法返回一个值,则调用通常被当作一个值,如

    int sum = add(1,2);
    
  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);
    }
}

但是使用递归方式有时候内存的消耗会很大

おすすめ

転載: blog.csdn.net/Maybe_do_it/article/details/114650942