方法其本质是为了实现某种功能的工具,有些功能一样,仅仅因为参数不同,这时候可以使用方法的重载,而不用起一堆方法,同时多个相同数据类型的参数,即使使用重载也没有解决,使用可变参数。
递归方法,其实有点类似高中的通项式和数学归纳法。
方法定义
- 修饰符
- 返回值类型
- 方法名
- 参数类型
- 方法体
形式参数,实际参数
java是值传递
方法的重载
规则
- 方法名必须相同
- 参数列表必须不同(参数个数,数据类型,顺序)
- 方法的返回值类型可以相同,可以不同
- 仅仅返回值的不同不足以成为方法的重载
可以应用于功能相同,只是参数不同的时候的情况。
进一步:
-
对于参数个数不同,可以使用可变参数。
-
对于参数类型不同,可以使用泛型
命令行传参
用于程序运行是需要参数的情况,在代码后面添加参数,传递给main()
注意:
对于package com.guang.method下的Demo01.java
编译的时候,可以在Demo01.java当前目录编译。
运行的时候,需要在com上级目录例如src下运行。
java Demo01.java
javac com.guang.method.Demo01 hello world
--hello
--world
package com.guang.method;
public class Demo01 {
public static void main(String[] args) {
for (String s : args) {
System.out.println(s);
}
}
}
可变参数
使用
在指定参数类型后加一个省略号(...)
一个方法中必能有一个可变参数且在最后定义。
本质是一个数组。
public static void add(int... i){
if (i.length==0){
return;
}
int sum=0;
for (int num : i) {
sum +=num;
}
System.out.println(sum);
}
add(1,2,3);
add(new int[]{1,2,3})
递归
结构
- 递归头:什么时候不调用自身方法。
- 递归体:什么时候需要调用自身方法。
阶乘
public static int f(int n){
if(n==1){
return 1;
}else {
return n*f(n-1);
}
}