方法 Function

概述 Overview
说明
. 完成特定功能的代码;也称函数
. 函数包含于类或对象中[位置]
. 一个函数只实现一个功能
. 函数只有值传递
声明
[修饰符] 返回类型 函数名( [参数列表] ){
    方法体
    return [值];
}
修饰符:如何使用方法,如public、static、final;修饰符为static时,是静态方法,可以直接调用,无需实例化;其它非静态方法必须new后才可以调用
返回类型:如果不需要特定的类型,应声明为void
函数名:采用小驼峰;类名采用大驼峰;主函数main()也是一个函数
参数列表:形式参数的声明;占位符;形参为字符串数组
方法体:方法的功能实现
return:除了返回结果外,还可以终止方法的执行
[]Function.java
package base.class1;

public class Function {
    public static void main(String[] args) {
        int res = add(2, 3);
        System.out.println("res=" + res);
    }

    public static int add(int a, int b) {
        return a + b;
    }
}
重载
说明
函数名相同,形参不同
适应更多需求
规则
.形参个数不同[常见]
.形参类型不同
.形参顺序不同
.函数仅仅返回类型不同,不构成重载
[]add
public static int add(int a, int b) {
    return a + b;
}

public static float add(float a, float b) {
    return a + b;
}

public static int add(int a, int b, int c) {
    return a + b + c;
}
命令行传参
说明
运行程序的时候,给它传递参数
package base.class1;

public class Function {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println("args[" + i + "]" + args[i]);
        }
    }
}
执行:注意路径的变化
PS E:\JavaPro\Demo\Demo> javac .\src\base\class1\Function.java
PS E:\JavaPro\Demo\Demo> cd src
PS E:\JavaPro\Demo\Demo\src> java base.class1.Function hi 123
args[0]hi
args[1]123
可变参数
说明
在参数类型后以...表示,相当于传递了一个长度可变的数组参数
一个函数只能声明一个可变参数
可变参数只能是最后一个形参
[]max
package base.class1;

public class Function {
    public static void main(String[] args) {
        max();
        max(1, 2, 3);
    }

    public static void max(int... num) {
        int res = 0;
        if (num.length == 0) {
            System.out.println("para null");
            return;
        }
        for (int i = 0; i < num.length; i++) {
            if (num[i] > res) {
                res = num[i];
            }
        }
        System.out.println("max=" + res);
    }
}
执行
para null
max=3
递归函数
说明
自己调用自己
必须有一个出口
递归函数一般都有对应的非递归函数实现
对栈的资源占用比较大,所以大数据量运算不建议使用递归
[]n!
1 1
2 2*1
3 3*2*1
... ...
n n*(n-1)*...3*2*1
public static int fn(int n) {
    if (n == 0) {
        return 1;
    } else {
        return n * fn(n - 1);
    }
}