java中方法的定义、重载、递归调用

   在程序之中很多情况下是有可能重复执行一些代码,方法的本质就是方便使用者进行重复的调用。

方法的基本定义

     public static 返回值类型 方法名称([参数类型 变量,....]) {
    // 该方法要执行的代码
    [return [返回值] ;]
}

对于返回值而言可以使用java中定义的数据类型,在方法中进行返回数据的处理,如果要返回数据则可以使用return描述,return返回的数据类型与方法返回值类型相同。

如果没有返回值,方法用void声明。

1.无参数无返回值的方法

public class JavaDemo {
    public static void main(String args[]) {
        printMessage() ;    // 执行方法调用
        printMessage() ;    // 执行方法调用
    }

    //定义了一个方法
    public static void printMessage() {    // 该方法包含了三行代码    
        System.out.println("**************************") ;
        System.out.println("*     www.mldn.cn        *") ;
        System.out.println("**************************") ;
    }
}

2.有参数,有返回值

public class JavaDemo {
    public static void main(String args[]) {
        String result = get(20.0) ;
        System.out.println(result) ;
        System.out.println(get(1.0)) ;    // 返回值可以直接输出
    }
    public static String get(double money) {
        if (money >= 10.0) {
            return "给你带一份快餐,找零:" + (money - 10.0) ;
        } else {
            return "对不起,您的余额不足,请先充值,或者捡漏。" ;
        }
    }
}

3.进行方法的定义时,方法的返回值类型为void时,那么可以利用return来结束调用。

public class JavaDemo {
    public static void main(String args[]) {
        sale(3) ;
        sale(-3) ;
    }
    public static void sale(int money) {
        if (money <= 0) {    // 余额不足
            return ;    // 后续代码不执行了    方法的结束
        }
        for (int x = 1 ; x <= money ; x ++) {
            System.out.println("王健开笑,第" + x + "次") ;
        }
    }

方法就是一段可以重复调用 的代码块,在java定义方法时,不会太长。

方法的重载

定义:当方法名称相同,参数的类型或个数不同的时候就称为方法的重载。

public class JavaDemo {
    public static void main(String args[]) {
        int resultA = sum(10,20) ;     // 调用两个int参数的方法
        int resultB = sum(10,20,30);    // 调用三个int参数的方法
        double resultC = sum(10.2,20.3) ;
        System.out.println("加法执行结果:" + resultA) ;
        System.out.println("加法执行结果:" + resultB) ;
        System.out.println("加法执行结果:" + resultC) ;
    }
    public static int sum(int x,int y) {
        return x + y ;
    }
    public static int sum(int x,int y,int z) {
        return x + y + z ;
    }
    public static double sum(double x,double y) {
        return x + y ;
    }

可以发现同一个方法名称,可以根据调用时传递的参数个数或类型实现不同方法体的调用,实现了方法的重载。

注意:方法的重载与方法的返回类型没有关系,只与传递的参数有关系,但是在实际开发中,记住一个开发原则:只要是方法重载强列要求方法的返回值类型相同。

System.out.println可以实现各种数据类型的输出,System.out.println本身就是一个方法的重载,这个方法的重载是由系统提供的。

方法的递归调用:

方法的递归调用是指一个方法自己调用自己的情况,利用递归调用可以解决一些重复且麻烦的问题。

需要注意:

  1.设置方法递归调用 的结束条件

   2.每一次调用的过程中一定要修改传递参数的条件

     范例:实现一到一百的累加

    public class JavaDemo {
    public static void main(String args[]) {
        int sum = 0 ;
        int x = 1 ;
        while (x <= 100) {    // 循环的结束条件
            sum += x ;
            x ++ ;        // 修改每一次循环的变量
        }
        System.out.println(sum) ;
    }

递归的方法:

public class JavaDemo {
    public static void main(String args[]) {
        System.out.println(sum(100)) ;
    }
    public static int sum(int num) {    // 执行累加
        if (num == 1) {    // 不累加了
            return 1 ;
        }
        return num + sum(num - 1) ;    // 递归调用
    }

代码分析:

1.第一次执行sum(),main主方法执行             return100+sum(99);

2.第二次执行sum()、sum()递归调用          return99+sum(98);

3.第九十九次执行sum()、sum()递归调用    return 2+sum(1);

4.第一百次执行sum()、sum()递归调用       return 1;

递归操作虽然可以简化调用,递归操作处理不当,会造成内存溢出。

范例:计算“1!+2!+...+90!”

计算阶乘首先要考虑数据类型,double

public class JavaDemo {
    public static void main(String args[]) {
        System.out.println(sum(90)) ;
    }
    public static double sum(int num) {
        if (num == 1) {
            return 1 ;
        }
        return fan(num) + sum(num - 1) ;
    }
    public static double fan(int num) {    // 执行累加
        if (num == 1) {    // 不累加了
            return 1 ;
        }
        return num * fan(num - 1) ;    // 递归调用
    }

不是必须的情况下,不建议使用递归调用。

猜你喜欢

转载自blog.csdn.net/weixin_38266599/article/details/81282512