目录 一、方法(Method)概念 二、可变参数(Variable) 三、方法的参数传递问题 1. 基本数据类型 2. 引用数据类型 四、方法签名(Method Signature) 五、方法的重载(Overload) 一、方法(
          目录
- 一、方法(Method)概念
 - 二、可变参数(Variable)
 - 三、方法的参数传递问题
 - 1. 基本数据类型
 - 2. 引用数据类型
 - 四、方法签名(Method Signature)
 - 五、方法的重载(Overload)
 
一、方法(Method)概念
- 1、Java 中的方法就是其他编程语言中的函数(Function)
 - 2、方法的定义格式:
 

- ① 访问修饰符有4种:public、protected、default、private【后期会详细说明】
 - ② 返回值类型可能是8大基本数据类型、引用类型或无返回值(void)
 - ③ 方法名需符合标识符命名规范、方法名需见名知意、方法名需是小驼峰(类名是大驼峰)
 - ④ 参数列表是该方法需要调用者传入的值(包括参数类型和参数名)【后期会详细说明】
 - ⑤ 方法体中才可编写 Java 语句(并不是所有花括号中都是方法体:如类定义的花括号中不是方法体)
 
下面是方法体代码案例:
public class MethodBody {
    // 1.代码块
    {
        System.out.println("【{}】是方法体");
    }
    // 2.静态代码块
    static {
        System.out.println("【static {}】是方法体");
    }
    // 3.方法
    public void run(int age) {
        System.out.println("方法的花括号中是方法体");
        // 4.if
        if (age == 18) {
            System.out.println("if 语句的花括号中是方法体");
        }
        // 5.for
        for (int i = 0; i < age; i++) {
            System.out.println("for 循环的花括号中是方法体");
        }
        // 6.while
        while (age > 50) {
            System.out.println("while 循环的花括号中是方法体");
        }
        // 7.switch-case
        switch (age) {
            // 错误:在该区域写代码是错误的(该区域不是方法体)
            // System.out.println(age); // ERROR
            case 1: {
                System.out.println("switch 语句的 case 语句块是方法体");
            }
        }
        // 8.do-while
        do {
            System.out.println("do-while 循环的花括号中是方法体");
        } while (age < 5);
    }
}
其实可以理解为只有三个地方是代码块:
① 代码块
② 静态代码块
③ 方法中
但是,当初老师教的时候把 if、while、for 等也归纳为方法体

补充:定义方法可能还会有其他修饰符(eg:static、final、abstract),后面还会详细介绍
仔细看下面的代码, 学会定义方法:
public class CreateMethodDemo {
    public static void main(String[] args) {
        int sum1 = CreateMethodDemo.sumOne2Hundred(1, 100);
        // sum1 = 5050
        System.out.println("sum1 = " + sum1);
        int sum2 = CreateMethodDemo.sumOne2Hundred(1, 1000);
        // sum2 = 500500
        System.out.println("sum2 = " + sum2);
        int sum3 = CreateMethodDemo.sumOne2Hundred(1, 10000);
        // sum3 = 50005000
        System.out.println("sum3 = " + sum3);
    }
    /**
     * 计算[start, end]的累加和
     *
     * @param start 起始值
     * @param end   结束值
     * @return [start, end]的累加和
     */
    private static int sumOne2Hundred(int start, int end) {
        int sum = 0;
        for (int i = start; i <= end; i++) {
            sum += i;
        }
        return sum;
    }
}

二、可变参数(Variable)
思考:编写程序计算多个整数的和。eg:计算【2, 5, 6, 7, 66, 53】的和
public class VariableParameter {
    public static void main(String[] args) {
        int[] arr = {2, 5, 6, 7, 66, 53};
        VariableParameter vp = new VariableParameter();
        // sumByArr = 139
        System.out.println(vp.sumByArr(arr));
    }
    /**
     * 计算多个整数的和(通过数组)
     *
     * @param arr (数组中存放需要进行求和的多个整数)
     * @return 数组中多个整数的和(类型是字符串)
     */
    private String sumByArr(int[] arr) {
        if (arr == null || arr.length < 1) return "arr 数组为 null, 为数组元素为 0";
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return "sumByArr = " + sum; 
    }
}
思路1:
