方法
方法概念
方法就是用来被调用的 设计原则 解释一个方法只完成一个功能 修饰符 返回值 方法名(参数类型 参数名){ .... .... }
修饰符:public private protected static 返回值类型: int double float ...... void
//加法 传入两个int值返回一个int 的值
public int add(int a, int b){ //传入 a和b
return a+b; //返回一个int 值为a+b
}
// 不传入数据 也不返回数据 只执行方法体
public void print(){
System.out.println("打印");
}
void 不用返回只执行方法体
其他都需要返回设定的固定数据类型
实际参数: 是具体的数值
形式参数: 方法名字括号中的变量
注意事项
-
return 是会直接结束方法
方法重载
一个类中有一一样的函数名称但是要有不同
-
参数类型不同
-
返回类型不同
-
参数数量不同
public int add(int a, int b){ //传入 a和b
return a+b; //返回一个int 值为a+b
}
public int add(int a, int b, int c){ //传入 a和b
return a+b; //返回一个int 值为a+b
}
public double add(double a, doule b){ //传入 a和b
return a+b; //返回一个double 值为a+b
}
public void add(){
System.out.println("add");
}
命令行传参数
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("args["+ i +"]: "+ args[i]);
}
}
在用java 命令运行时 在后面加入 字符 就会传入args
java mthedName heiehie hehe
//heiehi 和 hehe 会传入args数组 args[0]=heiehi args[1]=hehe
可以变参数
public class Conditions {
public static void main(String[] args) {
Conditions conditions = new Conditions();
conditions.print(1,2,2,3,4); //传入多少个参数都可以
}
public void print(int... c){ //传入不定量的数据 存入组数c
for(int i=0;i<c.length;i++){ //遍历传入的数字
System.out.println(c[i]);
}
}
}
注意点:
不定量参数一定要写在参数最后 (int a 不可以卸载 int...c之后)
public void print(int a,int... c){ //传入不定量的数据 存入组数c
for(int i=0;i<c.length;i++){ //遍历传入的数字
System.out.println(c[i]);
}
递归
就是自己调用自己
两个部分:
-
递归头:什么时候不再调用自身的方法。没有头就会死循环
-
递归体:什么时候需要调用自身方法。
经典案例 阶乘
public class Conditions {
public static void main(String[] args) {
Conditions conditions = new Conditions();
System.out.println(conditions.factorial(3)); //输出6
}
public int factorial(int a) {
if(a==1||a==0) {
return 1;
}
return a*factorial(a-1);
}
}
就自己调用自己 打开一个方法 直到 a==1 的时候程序运行到底:返回1 方法全部收回。
前阶段:打开方法
返回阶段:程序运行到底 一层一层返回
tips: 递归会带来大量的时间和空间复杂 一般不使用递归。