方法与递归
一:方法
1:方法的声明
(1)方法声明的语法规则:
[修饰符]返回值类型 方法名称 ([参数表]){ //方法体 }
(2)语法解析
方法体是一段代码块,用于执行方法的具体操作;
修饰符是一种关键字,包括:public,protected,private static,final,abstract,........
如果方法没有返回值,使用void关键字声明。 返回值类型反映方法完成其功能后返回的运算结果的数据类型。
方法不能嵌套,不能在一个方法中声明另外一个方法。
return返回值的类型必须与方法声明的返回类型一样。
(3)方法的注意事项
方法定义完成之后,不会自动去执行,执行方法需要先调用。
2:方法的使用
(1):如何调用方法?
a:调用同一个类中的方法,可以直接调用方法名。
b:目前我们是在main方法区调用方法,被调用的方法需要使用static修饰。
c: static 方法只能直接调用 static 方法
d:一个方法可以被多次调用
(2):类需不需要导包?
a:被调用的方法所在的类如果和调用方法的类在同一个包下,则不需要导包。
b:java.lang 包下的类不需要导包。
c:其他情况需要先导包,再使用。
(3)方法的返回值:
返回值类型, 返回值类型表示当前方法执行完后会返回一个结果,这个结果的类型就是声明时设置的类型
return 值得类型必须和声明的类型一致
(4)目前方法正常执行结束有三种情况:
-
所有代码正常执行
-
执行了 return 语句
-
System.exit(value);【特例】
(5):方法重载的定义
在同一个类中,方法名相同,但是方法的参数,顺序,类型不同,且与返回值无关,则构成了方法的重组。
3:方法的参数
(1)可变长度参数和数组的区别:
数组作为参数必须要传值,可变长度参数则不一定 可变长度参数只能用于参数列表的最后一个,数组则不一定 可变长度参数只能在参数列表出现,数组可以定义局部变量 数组参数和可变长度参数可以同时在同一个方法的参数列表中出现,但是,参数列表只有数组和可变长度参数不同时不是重载方法(不能同时出现)
二:递归
1:定义
递归是方法自己调用自己,要在方法体内存在结束调用的代码,且必须要有结束条件。
2:例题:
用递归方法实现阶乘
public class Demo1 { public static void main(String[] args) { int num = 5; int result = factorial(num);//调用递归函数计算阶乘。 System.out.println(result); } public static int factorial(int num) { if (num == 1){ //递归结束的条件 return 1; }else{ return num * factorial(num - 1); //递归执行的循环体 } } }