递归方法
定义: 一个方法在执行过程中调用自身, 就称为 “递归”。
递归方法优缺点
关于Java递归方法需要注意以下几点:
-
递归方法可以使用重复方法、少量代码,即可实现复杂功能的实现;
-
递归方法一定要有出口,否则无限递归调用,直到出现StackOverflowError(栈内存溢出)错误;
-
递归方法的递归次数也不能过多,否则同样出现StackOverflowError(栈内存溢出)错误;
-
递归方法都可以使用非递归方法解决,比如循环。
示例 :
求 N!
public class RecursiveTest {
public static void main(String[] args) {
// 调用递归方法,求n的阶乘
int res=getRecursive(5);
System.out.println(res);
}
// 递归方法,求n的阶乘
public static int getRecursive(int n) {
if(n==1) { // 如果为1的时候,就跳出,不再递归
return 1;
}else {
// n非1的情况下,继续调用本身,获取前一个数的递归结果
int res=n*getRecursive(n-1);
return res;
}
}
}
构造方法
构造方法介绍
定义:就是类构造对象时调用的方法,主要用来实例化对象。构造方法分为无参构造方法、有参构造方法。
说明:
-
构造方法是类的一个特殊成员方法;
-
构造方法作用:(1)构造出来一个类的实例 (2)对构造出来个一个类的实例(对象)初始化;
-
构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有;
-
类中必定有构造方法,若不写,系统自动提供一个无参构造方法;而一旦提供了有参构造方法,就不再提供默认的无参构造方法;
-
构造方法存在重载,比如无参构造方法和有参构造方法;
-
构造方法就是来创建对象的,使用new关键字,然后根据提供的构造方法进行选择构造即可。
public class Student {
// 成员变量
String username;
int age;
// 构造方法
public Student() {
System.out.println("这是一个无参构造方法");
}
public Student(String username, int age) {
this.username = username;
this.age = age;
System.out.println("这是一个有参构造方法");
}
// 成员方法
public void study(String username) {
System.out.println(username+"在学习");
}
}