Java方法的使用

1.方法的概念与使用

1.1 什么是方法

方法就是一个代码片段. 类似于 C 语言中的 "函数"。方法存在的意义:

1. 是能够模块化的组织代码(当代码规模比较复杂的时候).

2. 做到代码被重复使用, 一份代码可以在多个位置使用.

3. 让代码更好理解更简单.

4. 直接调用现有方法开发.

1.2 方法格式

// 方法定义

修饰符 返回值类型 方法名称([参数类型 形参 ...]){

        方法体代码;

         return 返回值;

}

public class Method{
    // 方法的定义
    public static int add(int x, int y) {
        return x + y;
    }
}

方法调用的执行过程:

调用方法--->传递参数--->找到方法地址--->执行被调方法的方法体--->被调方法结束返回--->回到主调方法继续往下 执行

方法的返回值是可选的. 有些时候可以没有的,没有时返回值类型必须写成void

2.实参和形参

Java中方法的形参就相当于sum函数中的自变量n,用来接收sum函数在调用时传递的值的。形参的名字可以随意 取,对方法都没有任何影响,形参只是方法在定义时需要借助的一个变量,用来保存方法在调用时传递过来的值。

public static int add(int a,int b){ // a,b是形参
    return a + b;
}
add(1,2);//1和2是实参,在方法调用时,形参a,b用来保存1,2

在Java中,实参的值永远都是拷贝到形参中,形参和实参本质是两个实体

对于基础类型来说, 形参相当于实参的拷贝. 即 传值调用

3.方法重载

1.方法重载的概念

Java方法的重载(Overloading)是指在同一个类中,可以有多个方法名相同但参数列表不同的方法。重载方法可以有不同的返回类型,但不能只有返回类型不同而参数列表相同。

重载方法的特点包括:

  1. 方法名相同但参数列表不同:参数列表包括参数的数量、类型和顺序。
  2. 返回类型可以不同:重载方法可以有不同的返回类型。
  3. 方法的重载和方法的参数名称无关,只与参数列表相关。
  4. 方法的重载可以提高代码的可读性和可维护性。

例如,以下是一个重载方法的示例:

public class Text{

    // 重载方法1:接受一个整数参数
    public void process(int num) {
        // 执行逻辑
    }

    // 重载方法2:接受一个字符串参数
    public void process(String str) {
        // 执行逻辑
    }

    // 重载方法3:接受两个整数参数
    public void process(int num1, int num2) {
        // 执行逻辑
    }

}

上述示例中,定义了三个方法,它们的方法名相同但参数列表不同,分别接受一个整数参数、一个字符串参数和两个整数参数。这三个方法构成了方法的重载。

在调用重载的方法时,编译器会根据传递的参数的数量和类型来确定调用哪个方法。如果找不到匹配的重载方法,则会报编译错误。

重载方法的选择规则如下:

  1. 如果有完全匹配的方法,则调用该方法。
  2. 如果没有完全匹配的方法,则寻找参数类型可自动转换成目标类型的方法。
  3. 如果有多个方法可以自动转换参数类型,则选择具有最精确匹配参数类型的方法。
  4. 如果有多个方法匹配度相同,则会报编译错误,要求明确指定调用的方法。

需要注意的是,方法的重载只与参数列表相关,与方法的返回类型、访问修饰符或抛出的异常类型等无关。重载方法不需要在方法名后面添加任何标志来区分。

4.递归

Java递归是指在一个方法中调用自身的过程。递归是一种常见的解决问题的方法,特别适用于问题可以分解为相同类型的子问题的情况。

在Java中,递归函数通常包含以下几个元素:

  1. 基本情况(Base Case):递归函数中必须包含基本情况,即递归终止的条件。当满足基本情况时,递归函数将不会再调用自身,以避免无限递归。

  2. 递归调用:在递归函数中,需要调用自身来处理子问题。每次递归调用都会将问题规模减小,直到最终达到基本情况。

  3. 递归返回:递归函数需要返回值,以将子问题的解合并为整个问题的解。在每次递归调用后,需要将子问题的解合并,然后返回给上一层的递归调用。

以下是一个简单的递归函数的例子,用来计算一个正整数的阶乘:

public static void main(String[] args) {
    int n = 5;
    int ret = factor(n);
    System.out.println("ret = " + ret);
}
public static int factor(int n) {
    System.out.println("函数开始, n = " + n);
    if (n == 1) {
    System.out.println("函数结束, n = 1 ret = 1");
    return 1;
}
    int ret = n * factor(n - 1);
    System.out.println("函数结束, n = " + n + " ret = " + ret);
    return ret;
}

在上面的例子中,factor方法计算一个正整数n的阶乘。当n等于0或1时,函数返回1,这是基本情况。否则,函数将递归调用自身,计算n-1的阶乘,并将结果与n相乘得到结果。最终将结果返回给上一层的递归调用。在main方法中,我们使用factor方法来计算5的阶乘,并将结果打印出来。

需要注意的是,在使用递归时必须注意递归的终止条件,以避免无限递归的问题。同时,递归的性能可能较差,因为它需要不断地进行函数调用和栈的操作。在实际应用中,需要谨慎使用递归,并确保它能够有效解决问题。

  • 21
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值