方法的基本用法(Java)

本文详细介绍了Java中方法的基本使用,包括方法的概念、语法及实参与形参的关系。接着讲解了方法的重载,阐述了重载的原因和规则,并给出示例。最后探讨了方法的递归,解析了递归的概念、执行过程和注意事项,通过阶乘计算的递归实例进行了说明。
摘要由CSDN通过智能技术生成

一.方法的基本使用

1.方法的概念

方法类似于C语言的“函数”,可以把方法/函数理解为一个功能,且这个功能可以重复使用的


2.方法的基本语法

// 方法定义
public static 方法返回值 方法名称(形式参数列表){
	//方法体代码;
}

// 方法调用
返回值 变量名 = 方法名称(实际参数);

注意:
(1)函数的名字最好用小驼峰命名法;
(2)定义方法的时候,每个参数要指定类型,也可以没有参数;
(3)定义方法的时候,可以没有返回值,如果没有返回值的话,则返回值类型应写成void;
(4)方法定义的参数称为“形参”,方法调用的参数称为“实参”;
(5)方法的定义必须在类之中,但是代码的书写不需要一定在调用位置的上方,也可以在下方定义方法;
(6)调用方法的时候不用进行“函数声明”。



3.实参与形参的关系

举个例子:

public class TestDemo {
    public static void swap(int x,int y){
        int tmp = x;
        x = y;
        y = tmp;
    }

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("交换实参前:" + a + " " + b);
        swap(a, b);
        System.out.println("交换实参后:" + a + " " + b);
    }
}

执行后的结果为:
在这里插入图片描述
我们可以发现 a 和 b 并没有完成交换,因为对于基本类型来说,形参相当于实参的拷贝,即是传值调用。

int a = 10;
int b = 20;
int x = a;
int y = b;
int tmp = x;
x = y;
y = tmp;

在Java里面我们是取不到栈上的地址的,如果要解决这个问题我们只能把 a b 的值放在堆上,放在堆上的都是对象,所以有一个解决方式就是采用数组。



二.方法的重载

1.为什么要使用重载

当我们需要用一个函数同时兼容多种类型参数的时候,我们就可以使用到方法重载

可能我们会想为什么不创建像addInt、addDouble等些函数来分别定义方法,但是即使这种写法是对的,但是Java认为这种写法不友好,所以就有了重载的概念

2.重载的规则

要求方法名相同,但是方法的参数不同(参数个数或者参数的类型),其中方法的返回值类型并不会影响重载。

代码示例:

public class TestDemo {
    public static void main(String[] args) {
        int a1 = 10;
        int b1 = 20;
        int c1 = 30;
        System.out.println(add(a1,b1));
        System.out.println(add(a1,b1,c1));

        double a2 = 5.3;
        double b2 = 6.4;
        System.out.println(add(a2,b2));
    }

    public static int add(int x, int y) {
        return x + y;
    }

    public static double add(double x, double y) {
        return x + y;
    }

    public static int add(int x, int y, int z){
        return x + y + z;
    }
}


三.方法的递归

1.递归的概念

一个方法自己来调用自己,这就是递归。

递归的重要思想就是把重复复杂的问题简单化

递归的实现:要有一个终止条件和一个递推公式(递归难就难在如何快速找到递归公式)。

2.举例来分析递归的执行过程

举一个例子来分析下递归的过程:
比如我们要求5!的阶乘
在这里插入图片描述
根据上述的图可以知道递推公式为:n*( n - 1 )
且终止条件为n = 1的时候返回1

代码如下

public class TestDemo {
    public static void main(String[] args) {
        int n = 5;
        System.out.println(factor(n));
    }

    public static int factor(int n){
    	//n = 1为终止条件
        if(n == 1) {
            return 1;
        }
        //递推公式
        int tmp = n * factor(n-1);
        return tmp;
    }
}

下面来看一下代码的执行过程
在这里插入图片描述


3.递归的总结

(1)递归是一种重要的编程思想,使用递归的时候不要纵向思考,需要我们学会横向思考问题,递归就是为了简化复杂代码的,不要想着根据规律来展开所有的代码,如果想着要展开所有代码的话就又把问题更加复杂化了;
(2)因为递归的效率一般会比迭代(循环)低,所以在考虑问题的时候,如果递归和非递归都可以解决的话,更推荐使用非递归,也就是迭代的方法解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值