0
点赞
收藏
分享

微信扫一扫

004-方法,方法的递归,方法的重载

互联网码农 2021-09-21 阅读 57

方法

什么是方法

方法就是将实现某个功能的代码放入一个代码块中,把这个代码块称之为方法。

为什么要用方法

因为随着业务量的增大,代码量会越来越多,如果把所有的代码都方法在main方法,
1、不利于管理
2、有重复的代码

方法的组成部分

public static void main(String[] args){
    方法体......
}

方法的修饰符 返回值类型  方法名(参数列表){
    方法体......
    return 返回的值;
}

方法的修饰符 public static 
    访问修饰符   public   方法访问修饰符(public 公共的  protected 受保护的 缺省的(默认的) private(私有的))
    其他修饰符static  、final  静态的(静态的方法只能使用静态的方法)

返回值类型  
    一个方法在执行完成之后,返回的结果类型
    有返回结果        返回值的类型
    没有返回结果       void

方法名  
    遵循标识符的命名规范(小驼峰)

参数列表
    在调用一个方法的时候,传入的数据
    可以有多个参数,参数与参数之间用,隔开

方法体
    实现功能的代码块
  • 方法的定义

    • 无参数,没有返回值的方法

    关门方法

    • 有参数,没有返回值的方法

    倒垃圾

    • 无参数,有返回值的方法

    收破烂

    • 有参数,有返回值

    取钱

    方法的调用

如何调用方法:
    a.没有参数没有返回值    方法名();
    b.有参数没有返回值     方法名(参数1,参数2......)
        注意:实参和形参的个数必须一样,且顺序要一一对应
    c.有参数有返回值的     数据类型 变量名 = 方法名(参数1,参数2......);
        注意:可以定义变量来接受方法的返回值
    d.没有参数有返回值的    数据类型 变量名 = 方法名();

方法使用的几个注意问题

  • 方法不能嵌套方法,方法之间是互相独立
  • 调用方法的时候,实参和形参要一致(个数、类型、顺序)
  • 当方法有返回值,必须要加return,且返回的类型必须与返回值类型一致
  • 如果方法没有返回值,也可以加return,但是不能返回结果,return作用是结束方法
  • 一个方法只能有一个返回值

方法的重载

重载的概念

1、如果多个方法的名字相同,参数列表不相同,就称之为方法的重载(同名,不同参。与返回值和访问修饰符无关)
举例:  方法的重载
System.out.println("hello");
System.out.println(1000);
System.out.println(10.1);
System.out.println('男');
System.out.println(true);

只要方法重载,才能使得方法名字相同

方法的重载的好处  可以记忆一个方法名就能利根据传递的参数不同,去执行不同的方法
实现重载:同名不同参,与返回值和访问修饰符无关
//编写方法计算两个数字(int 、double)的和
public static int sum(int a, int b) {
    return a+b;
}
public static double sum(double a,double b) {
    return a + b;
}

为什么要使用方法的重载

System.out.println(123);
System.out.println("cxk");
System.out.println('a');
System.out.println(20.2);
可以传入不同类型的参数,实现不同的功能

重载的案例

public class Demo4 {
    public static void main(String[] args) {
//        System.out.println(123);
//        System.out.println("cxk");
//        System.out.println('a');
//        System.out.println(20.2);

        //doSomeThing("魔兽");
        //doSomeThing(3);

//        int n = add(10,20);
//        System.out.println(n);
        System.out.println(add(10,20));
        System.out.println(add(10.0,20.0));
        System.out.println(add("10","20"));
    }
    /**
     * 如果传入是两个整数,就做加法运算                 返回结果
     * public static int add(int a,int b){
     * 
     * }
     * 如果传入是两个小数,就做乘法运算                 返回结果
     * 
     * 如果传入是两个字符串,就拼接两个字符串      返回结果
     * 
     */

     public static int add(int a,int b){
         return a+b;
     }
    public static double add(double a ,double b) {
        return a+b;
    }
    public static String add(String a ,String b) {
        return a+b;
    }
    public static void doSomeThing(String name) {
        System.out.println("完游戏"+name);
    }
    public static void doSomeThing(int num) {
        System.out.println("学习"+num+"个小时");
    }
}

方法的递归

方法的递归要求
1、在方法中调用自己这个方法
2、递归方法要有出口
3、递归分为回溯阶段和递推阶段

代码演示

求阶乘递归

    /**
     * 使用递归来计算阶乘
     * 
     *                             jieCheng1(4)
     * 
     *                  4 *  jieCheng1(3)   4*6 = 24
     *         
     *          3*jieCheng1(2)            3*2   =6
     *          
     *      2* jieCheng1(1)               2*1   =2
     *      
     *        1
     * 
     */

    public static int jieCheng1(int num) {
        if(num == 1) {
            return 1;
        }
        return num * jieCheng1(num-1);
    }

求斐波那契数列

/**
     * 斐波那契数列
     * 参数n  代表项树
     * 返回值:第n项值
     *                         method(5)
     *                     method(4)                                         +                                         method(3)
     *            method(3)+  method(2)                                                       method(2)     + method(1)  
     * method(2)     + method(1)  
     * 
     *    method(1)  = 1 
     *    method(2)  = 2
     *    method(3)  = 3
     *    method(4)  = 5
     *    method(5)  = 8
     */

    public  static int method(int n) {
        if(n == 1 || n == 2) {
            return 1;
        }
        return method(n-1)+method(n-2);

    }

举报

相关推荐

0 条评论