概念

一段具有独立功能的代码块,调用之后执行

代码块:在一对大括号中的多行代码

作用

  1. 代码不需要全部堆积在main方法里面
  2. 自由控制功能的调用
  3. 提高代码的复用性

格式

基础版本

public static void 方法名() {  
    // 方法体
}
1.方法定义位置:类里面,与main方法平级
2.方法的调用:方法名();
public class Method {
    public static void main(String[] args) {
        prin();
        sum();
    }

    /**
     * 求两个整数和的方法
     */
    public static void sum(){
        Scanner sc = new Scanner(System.in);
        System.out.println("录入两个整数");
        int a = sc.nextInt();
        int b = sc.nextInt();
        System.out.println("和:" + (a+b));
    }
    /**
     * 打印1-100的整数
     */
    public static void prin(){
        for (int i = 1; i < 101; i++) {
            System.out.println(i);
        }
    }
}

带参版本

定义格式

public static void 方法名 (参数 ) { … … }

    public static void 方法名 (数据类型 变量名,数据类型 变量名2 ) { … … }


单个参数:
    public static void 方法名 ( 数据类型 变量名 ) { … … }
范例(单个参数): 
    public static void method( int number) { … … }


格式(多个参数): 
    public static void 方法名 ( 数据类型 变量名1,数据类型 变量名2 ,…… ) { … … }
范例(多个参数): 
    public static void getMax( int number1,int number2 ) { … … }
//方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错
//方法定义时,多个参数之间使用逗号(,)分隔

调用格式

方法名(参数);

方法名 ( 变量名/常量值 ) ;
method(5);

方法名 ( 变量名1/常量值1 ,变量名2/常量值2 ) ;
getMax(5,6 ) ; 
//方法调用时,参数的数量与类型必须与方法定义中的设置相匹配,否则程序将报错

形参与实参

形式参数:形参,方法定义时小括号里的变量,只声明不赋值的变量。

实际参数:实参,方法调用的时候给的参数,实参是具有具体值的,就是用来给形参赋值的。

/**
 * 带参数版本方法
 */
public class MethodWithArgument {
    public static void main(String[] args) {
        fight(9,10);
        int a = 100;
        int b = 20;
        //个数要一致,数据类型要一致,但是变量名字不需要一致
        fight(a,b);
    }

    /**
     *打架
     * @param my 我方人数
     * @param enemy 敌方人数
     */
    public static void fight(int my,int enemy){
        if (my>enemy){
            System.out.println("打赢坐牢");
        }else {
            System.out.println("打输住院");
        }
    }
}

练习

/**
 * 设计一个方法(print) 用于打印 n 到 m 之间所有的奇数
 * 设计一个方法(getMax) 这个方法可以打印 任意 3个整数中的最大数
 * 设计一个方法(printArrSum) 这个方法可以打印 一个任意int数组中各个元素的和
 * 定义一个方法 把任意字符数组当中的字符拼接成一个字符串并输出
 */
public class Test {
    public static void main(String[] args) {
        print(50, 20);
        System.out.println();
        getMax(10,20,500);
        int[] arr ={99,66,33,55,44,66};
        printArrSum(arr);
        printArrSum(new int[] {1,2,3,4,5});
        stringSplicing(new char[]{'a','b','a'});
    }

    /**
     * 打印 n-m 之间的所有奇数
     *
     * @param n 一个整数
     * @param m 一个整数
     */
    public static void print(int n, int m) {
        if (n > 0 && m > 0) {
            if (n < m) {
                for (int i = n; i <= m; i++) {
                    if (i % 2 == 1) {
                        System.out.print(i+"\t");
                    }
                }
            } else {
                for (int i = m; i <= n; i++) {
                    if (i % 2 == 1) {
                        System.out.print(i+"\t");
                    }
                }
            }
        } else {
            System.out.println("参数传入错误");
        }
    }

    /**
     * 打印 任意3个整数中的最大值
     *
     * @param num1 一个整数
     * @param num2 一个整数
     * @param num3 一个整数
     */
    public static void getMax(int num1, int num2, int num3) {
        if (num1 > 0 && num2 > 0 && num3 > 0) {
            int max = num1 > num2 ? num1 : num2;
            System.out.println(max > num3 ? max : num3);
        } else {
            System.out.println("参数传入错误");
        }
    }

    /**
     * 打印任意数组的和
     * @param arr 任意数组
     */
    public static void printArrSum(int[] arr){
        int sum =0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        System.out.println("数组的和是:"+sum);
    }

    /**
     * 字符拼接字符串
     * @param a 任意char类型数组
     */
    public static void stringSplicing(char[] arr){
        String b ="";
        for (int i = 0; i < arr.length; i++) {
            b+=arr[i];
        }
        System.out.println(b);
    }
}

带返回值版本

public static  结果的数据类型 方法名 (数据类型 变量名1,数据类型 变量名2... ) {  
      return 返回值;//将方法的运行结果返回给调用者
}
返回值:方法执行完后的结果
方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错

return关键字注意

  1. return关键字作用:返回一个值,终止方法的运行
  2. void的方法也可以写return,后面什么都不加
  3. return后面不能直接写代码
  4. switch里面也可以搭配return,并且具有break作用
  5. 一个方法内可以有多个return,但是必须处在不同的作用域内
/**
 * 具有返回值的方法
 */
public class MethodWithReturn {
    public static void main(String[] args) {
        int[] arr ={1,2,3,4,5,6,7,8,9};
        int arrSum = getArrSum(arr);
        System.out.println((double) arrSum/arr.length);
    }

    /**
     * 求数组和
     * @param arr 一个数组
     * @return 返回和
     */
    public static int getArrSum(int[] arr){
        int sum =0;
        for (int i = 0; i < arr.length; i++) {
            sum+=arr[i];
        }
        return sum;
    }
}

练习

/**
 * 需求:
 * 1.定义一个方法,该方法可以给水果称重算钱(方法名:weigh)
 * 2.定义一个方法,该方法可以转账付钱,在方法里面就写一条输出语句(本次转账....钱)
 */
public class Test1 {
    public static void main(String[] args) {
        double weigh = weigh(100, 555);
        pay(weigh);
    }

    /**
     * 给水果称重算钱
     *
     * @param weight    重量
     * @param unitPrice 单价
     * @return 总计
     */
    public static double weigh(double weight, double unitPrice) {
        return weight * unitPrice;
    }

    /**
     * 该方法可以转账付钱
     * @param money 钱
     */
    public static void pay(double money) {
        System.out.println("本次转账" + money);
    }
}

通用版本

方法的定义格式:
        public static  返回值类型  方法名(参数类型 参数名,参数类型2 参数名2,.....){
                方法体;
                return 返回值;
        }
例如:
    public static int getMax(int a,int b){
        int max = a>b?a:b;
        return max;
    }

返回值 :就这件事情做完之后的结果
返回值类型: 这件事情做完后的结果的数据类型
方法名:这件事情的名字
参数:做这件事情需要的东西
参数类型 : 参数的数据类型
参数名:就是给参数取的一个名字

return :用来返回最终的结果. 两个作用,第一结束当前方法,第二将后面的返回值还给调用处

方法的构成

包含了三要素:

  1. 返回值
  2. 方法名
  3. 参数列表

方法签名:(第二要素+第三要素)

注意事项

方法不能嵌套定义,各个方法之间是平级关系

方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写。如果要编写return,后面不能跟具体的数据。

方法的重载

方法重载(Overload)的定义:
在同一个类中,方法名相同,参数列表不同的方法才叫重载

参数列表不同:

  1. 参数个数不同
  2. 参数类型不同
  3. 参数的多类型顺序不同

注意:看参数列表是否相同的时候和参数名没有关系

作业

定义一个方法,该方法可以求任意一个三位数的各个位数的立方和。定义并且调用该方法。

定义一个方法,该方法可以求1~n的和 。n的值是方法调用时传入

定义一个方法,该方法可以求数组的平均值 ,具体的数组是方法调用时传入

定义方法 完成打印十遍HelloWorld

定义一个方法,能够完成对比较三个数的最大值,并将最大值打印,三个数要求使用键盘录入

定义方法,用于计算数组中的最大值和最小值,将最大值和最小值返回

定义一个方法,该方法可以判断两个数组是否完全一致(长度一致,内容一致,顺序一致,称之为完全一致。)
例如:{1,2,3} 和{1,2,3} 是完全一致的。{1,2,3} 和{3,2,1} 不是完全一致的

import java.util.Scanner;

/**
 * @author DS_xiao_jian
 * @date 2023.04.03 下午 06:18:00
 */
public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        cubicSum(333);
        sum(2);
        arrayAverage(new int[]{1, 2, 3});
        printHelloWorld();
        System.out.println("请录入3个整数");
        compareSizes(scanner.nextInt(), scanner.nextInt(), scanner.nextInt());
        maxAndMin(new int[]{5, 2, 20, 9, 3});
        System.out.println(judgmentArray(new int[]{5, 2, 20, 9, 3},new int[]{5, 2, 20, 9, 3}));
    }

    /**
     * 计算三位数的各个位数的立方和
     *
     * @param num 任意三位数
     */
    public static void cubicSum(int num) {
        //个位
        int individualBits = num % 10;
        //十位
        int ten = num / 10 % 10;
        //百位
        int hundreds = num / 100;

        System.out.println("个位立方和" + (individualBits * individualBits * individualBits));
        System.out.println("十位立方和" + (ten * ten * ten));
        System.out.println("白位立方和" + (hundreds * hundreds * hundreds));
    }

    /**
     * 求1~n的和
     *
     * @param n 任意整数
     */
    public static void sum(int n) {
        int sum = 0;
        for (int i = 0; i <= n; i++) {
            sum += i;
        }
        System.out.println("1~" + n + "的和是:" + sum);
    }

    /**
     * 求数组的平均值
     *
     * @param arr 任意整数数组
     */
    public static void arrayAverage(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        System.out.println("数组的平均值是:" + ((double) sum / arr.length));
    }

    /**
     * 打印十遍HelloWorld
     */
    public static void printHelloWorld() {
        for (int i = 0; i < 11; i++) {
            System.out.println("HelloWorld");
        }
    }

    /**
     * 键盘录入三个整数比较大小
     *
     * @param num1 任意整数
     * @param num2 任意整数
     * @param num3 任意整数
     */
    public static void compareSizes(int num1, int num2, int num3) {
        int temp = num1 > num2 ? num1 : num2;
        System.out.println("最大值为" + (temp > num3 ? temp : num3));
    }

    /**
     * 计算数组中最大值与最小值
     * @param arr 任意整数数组
     */
    public static void maxAndMin(int[] arr) {
        int max = arr[0];
        int min = arr[0];
            for (int i = 0; i < arr.length; i++) {
                if (max < arr[i]) {
                    max = arr[i];
                }
                if (min > arr[i]){
                    min = arr[i];
                }
            }
        System.out.println("最大值为" + max);
        System.out.println("最小值为" + min);
    }

    /**
     * 判断两个数组是否完全一致
     * @param arr1 任意一个整数数组
     * @param arr2 任意一个整数数组
     * @return true 完全一致 false 不是完全一致
     */
    public static boolean judgmentArray(int[] arr1,int[] arr2){
        if (arr1.length!=arr2.length){
            return false;
        }else {
            for (int i = 0; i < arr1.length; i++) {
                if (arr1[i]!=arr2[i]){
                    return false;
                }
            }
        }
        return true;
    }
}
最后修改:2023 年 04 月 05 日
如果觉得我的文章对你有用,请随意赞赏