1.递归方法

一个方法体内调用自身,就被称为方法递归,方法递归包含了隐式循环,会重复执行一段代码,而且无须进行循环控制。
首先先来介绍递归的特点:

1.必须在某一个时候方法的返回值是确定的,即不在调用自身,否则就会类似于死循环。
2.次数不能太多,否则容易造成内存溢出
3.构造方法不能递归

有一个很经典的题目,斐波那契数列,可以使用递归来解决,如:
有一对兔子,从出生后第三个月开始每个月都生一对兔子,小兔子出生三个月后也是每个月生一对兔子,假如兔子都不死,那么第二十个月的兔子对数是多少?

代码实现:

public class FibonacciSequence { 
     public static void main(String[] args) {
      // 定义一个数组  int[] arr = new int[20];
        arr[0] = 1;
        arr[1] = 1; for (int i = 2; i < 20; i++) {
            arr[i] = arr[i - 1] + arr[i - 2];
        }   int a = 1; int b = 1; for (int i = 0; i < 18; i++) { int temp = a;
            a = b;
            b = temp + b;
        }
        System.out.println(b); //6765  
        System.out.println(fib(20)); //6765
        } /* 
           * 方法: 返回值类型:int 参数列表:int n 出口条件: 第一个月是1,第二个月是1 规律: 从第三个月开始,每一个月是前两个月之和 */  
            public static int fib(int n) { if (n == 1 || n == 2) { 
      		return 1;
        } else { return fib(n - 1) + fib(n - 2);
        }
    }
}

2.方法重载

java允许同一个类里面定义多个同名方法,只要形参列表不同即可,如果一个类中包含了两个或两个以上的方法的方法名相同,但形参列表不同,则被称为方法重载。
在java中确定一个方法需要有如下三个要素:
1.调用者,可以是类也可以是对象
2.方法名
3.形参列表
方法重载的要求就是同一个类中方法名相同,参数列表不同
例如:

public class Overload {
        public void test() {
            System.out.println("无参数");
        }
        public void test(String msg) {
            System.out.println("重载的test方法" + msg);
        }
        public static void main(String[] args) {
            Overload o = new Overload();
            o.test();
            o.test("hello world");
        }
    }

上面的代码中o.test未传入参数的话则调用的无参数的test()方法,而传入参数则调用带字符串参数的方法.