方法/函数


定义

封装一段特定的逻辑功能,主要包含的要素有以下这些:

  • 权限修饰符
  • 方法名
  • 参数列表
  • 返回值

优势

  • 有利于程序的后期维护【后期修改方法一处就可以,不用处处去修改】
  • 提高开发效率,提高代码重用性【一次开发,多次利用】

语法

package zuoye02;

public class fangfa {
    //以下为自定义方法:打印1-100之间所有数字
    public static void printNum() {
        for (int i=1;i<=100;i++) {
            System.out.println(i);
        }
    }
    
    //定义一个方法:打印n-m所有数字
    public static void printNum2(int n,int m) {
        for (int i=n;i<=m;i++) {
            System.out.println(i);
        }
    }
    
    //以下为入口方法
public static void main(String[] args) {
    //方法调用:[数组类型 变量名=]方法名([实际参数列表]);
    //调用无参数无返回值的方法
    printNum();
    //调用有参数的方法:方法名(实际参数列表);
    printNum2(10,50);//实际参数的个数、类型、顺序必须与形式参数列表一致
    //调用有参数有返回值的方法
    double res=getSum(1.5,10.0);
}
}

练习题 用户登录

题目要求:

定义方法:实现用户登陆功能 要求输入用户名:admin 密码:123456

登陆成功,除此之外的情况登陆失败。

public static boolean login(String admin,int pwd){
    if ("admin".equals(admin)&&pwd==123456){
        return true;
        return false;
    }
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        System.out.println("请输入用户名和密码:");
        String name=input.next();
        int pwd=input.nextInt();
        //调用方法
        boolean res=login(name,pwd);
        System.out.println("登陆结果:"+res);
    }
}

递归

定义

在运行时自己调用自己【不能无限制调用,必须要有出口】

////////////// 如果没有出口,就会变成死递归

递归的出现是为了简化问题:

子问题与原来的问题是同样的问题,但是更为简单

这样说有点抽象,我们可以这样理解:若规定我们来求一个较为复杂的问题,比如求1~10000000的和,我们可以先求1~10000000-1的和,为了求1~10000000-1的和,我们可以先求1~10000000-2的和,如此不断的将问题简化,该问题的本质就与1~1的和并无不同


案例 求1~N的和

我们在这里假设一个函数he(N),意为1~N的和

//入口方法
public static void main(String[] args){
    int n;
    int res=he(n);
    res=(n-1)+n;//例如he(4)+5;
}

//1-n之和的方法
public static int he(int n){
    if(n==1){//递归出口
        return 1;
    }
    return he(n-1)+n;
}

方法的重载

若两个方法名称相同,但是参数(个数、顺序、类型)不一致 ,我们可以认为一个方法是另一个方法的重载

只有方法的返回值不同的时候可以构成重载


参数的值传递与引用传递

值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

引用传递是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

最后修改:2022 年 08 月 12 日
如果我的文章帮到了你,请我喝杯奶茶吧