方法的概念与使用

目录

1.方法的概念

2.方法的定义

3.方法的电调用

4. 方法的参数

4.1 单个参数

4.2 多个参数

5. 返回值和返回值类型

6. return关键字

6.1 情况1

6.2 情况2

6.3 情况3

7.方法的重载

8.递归


1.方法的概念

实现特定功能的一段代码,可反复使用。

2.方法的定义

定义位置:与main方法平级

定义格式:public static void 方法名(形参列表){方法体}

3.方法的电调用

在需要调用方法的位置直接书写方法名即可。

public class TestMethod {
    public static void main(String[] args) {
        System.out.println("床前明月光");
        printSign();
        System.out.println("疑是地上霜");
        printSign();
        System.out.println("举头望明月");
        printSign();
        System.out.println("低头思故乡");
        printSign();
    }
    public static void printSign(){
        System.out.println("----------");
    }
}

4. 方法的参数

形参:形式参数 表示方法在声明的时候书写的参数

形参规定了参数的个数、类型和顺序

表示实参必须遵循这个规定

实参:实际参数 表示方法调用的时候书写的参数

4.1 单个参数

public class TestMethodParameter {
    public static void main(String[] args) {
        System.out.println("床前明月光");
        int num =10;
        String str = "abc";
        printSign(num);

        System.out.println("疑是地上霜");

        printSign(5);

        System.out.println("举头望明月");
        int a = 2;
        int b = 3;
        int sum = a + b;
        printSign(sum);

        System.out.println("低头思故乡");
        printSign(6);
    }

    /**
     *  形参:形式参数 表示方法在声明的时候书写参数
     *  形参规定了参数的 个数、类型、顺序
     *  表示实参必须遵循这个规定
     * @param num
     */
    public static void printSign(int num){
        for(int i = 1;i <= num;i++){
            System.out.print("-");
        }
        System.out.println();
    }
}

4.2 多个参数

public class TestMethodManyParameter {
    public static void main(String[] args) {
        System.out.println("床前明月光");
        printSign( 10,"#");

        System.out.println("疑是地上霜");
        printSign(5, "#");

        System.out.println("举头望明月");
        int num = 6;
        String sign = "^";
        printSign(num,sign);

        System.out.println("低头思故乡");
        printSign(7, "@");
    }

    /**
     *  形参:参数的 个数 类型 顺序
     * @param count
     * @param sign
     */
    public static void printSign(int count,String sign){
        for(int i = 1;i <= count;i++){
            System.out.print(sign);
        }
        System.out.println();
    }
}

5. 返回值和返回值类型

如果需要一个方法执行完毕后,返回给我们一个结果,则可以将返回值类型写为除了void之外的任意数据类型(需要什么数据就返回什么类型),如果返回值类型不是void,必须使用return关键字返回结果。其结果必须和类型保持一致。

需要返回就返回,返回结果必须和方法声明返回值类型相同。

6. return关键字

6.1 情况1

在返回值类型不是void的方法中,使用一次return 关键字直接返回一个结果。

​
/**
 * @author CQL
 * @description TODO
 * @date 2023/4/4 9:30
 *  使用方法 + 参数 + 返回值 实现计算机求和计算
 */
public class TestReturnedCalc {

    public static int addition(int a,int b){
        int sum = a + b;
        System.out.println("最终的和为:sum = " + sum);
        return sum;
    }

    public static void main(String[] args) {
        int sum =  addition(10222, 30); 
        if(sum % 2 == 0){
            System.out.println("偶数");
        }else{
            System.out.println("奇数");
        }
    }
}

6.2 情况2

在分支结构中使用return关键字返回结果,必须保证每一条分支都有正确的返回值

/**
 * @author CQL
 * @description TODO
 * @date 2023/4/4 9:48
 *  编写方法判断奇数还是偶数
 */
public class TestReturnedNumber {
    public static String isEven(int num){
        int result = 0;
        if(num % 2 == 0 ){
            result = 1; // 偶数
        }
        return result == 1 ? "偶数" : "奇数";
    }

    public static boolean isEvenWithBoolean(int num){
        if(num % 2 == 0){
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        System.out.println(isEven(11));
        System.out.println(isEvenWithBoolean(11)== true ? "偶数"  : "奇数");
    }
}

6.3 情况3

在返回值类型为void的方法体中,使用return关键字

此时return关键字只表示结束方法,return之后不能加任何内容

/**
 * @author CQL
 * @description TODO
 * @date 2023/4/4 9:53
 *  在返回值类型为void的方法中 也可以使用return 后边不能加在任何内容
 *  此时return关键字只表示结束方法
 */
public class TestReturnedNoValue {
    public static void m1(){
        for (int i = 0;i < 10;i++){
            if(i == 5){
                return; // break 注意区分和break的区别
            }
            System.out.println(i);
        }
        System.out.println("m1方法执行完毕");
    }
    public static void main(String[] args) {
        m1();
    }
}

7.方法的重载

同一个类中,或者父子类中的方法,方法名相同,参数列表不同(参数的个数、类型、顺序至少有一个不同),即为方法的重载。跟返回值、访问权限修饰符无关。

方法重载的好处:屏蔽使用差异 统一程序结构 提高程序的灵活性

/**
 * @author CQL
 * @description TODO
 * @date 2023/4/4 11:17
 *  方法重载:同一个类中,或者父子类中的方法,方法名相同,
 *  参数列表不同(参数的个数、类型、顺序至少有一个不同),即可称之为方法重载。
 *
 * 跟返回值、访问权限修饰符无关
 *
 * 方法重载的好处:屏蔽使用差异 统一程序结构 提高程序的灵活性
 * 我们目前天天使用的 print 以及 println方法 就属于方法重载
 * 查看JDK源代码 ctrl + 鼠标左键 点击方法名
 *
 */
public class TestMethodOverload {
    public static void addition(int a,int b){
        System.out.println(a + b);
    }
    public static String addition(String c,int d){
        return "abc";
    }
    public static String addition(int d,String c){
        return "abc";
    }
    public static int addition(int a,int b ,int c){
        int sum = a + b + c;
        return a + b + c;
    }
    public static double addition(double a,int b,int c,short d){
        return a + b + c + d;
    }
    public static long addition(double a,long b,int c,byte d,long e){
        return (long)(a + b + c+ d + e);
    }

    public static void main(String[] args) {
        addition(10, 20);
        addition(1, 2,3);
        addition(1,2,3,(short)2);
        addition(20, 2, 2, (byte)2, 2);

        addition(10, "abc");
        addition("abc", 20);

        System.out.println(1);
        System.out.println(1.5);
        System.out.println(1.5F);
        System.out.println('1');
        System.out.println(true);
        System.out.println(false);
        System.out.println("abc");

        System.out.print(1);
        System.out.print(1.5);
        System.out.print(1.5F);
        System.out.print('1');
        System.out.print(true);
        System.out.print(false);
        System.out.print("abc");
    }
}

8.递归

递归:递进和回归

可以简单的理解为自己调自己。

递归的前提条件:

1.可以将一个大的问题 拆分成若干个小问题(循环可以实现的效果  递归也可以实现 反之不然)

2.必须有正确的出口

实际需求:

1.求1~5之间的和

2.求阶乘

递归可以解决的典型问题:

1.斐波那契数列

2.汉诺塔问题

3.遍历文件目录

4.八皇后的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值