Java学习苦旅(五)——方法?方法!!!

本篇博客将介绍Java中的方法。

方法的使用

什么是方法

初次看到方法两字,心里有些疑惑。方法不是指为获得某种东西或达到某种目的而采取的手段与行为方式吗?这是我们日常生活中所说的方法。而在Java中, 方法就是一个代码片段,类似于C语言中的函数。

方法的存在意义:

  1. 当代码规模比较复杂的时候,能够模块化地组织代码。

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

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

  4. 直接调用现有方法开发,不必重复造轮子。

方法的语法

基本语法

// 方法定义
public static 方法返回值 方法名称([参数类型 形参 ...]){
     //方法体代码;
     return 返回值;
}
// 方法调用
返回值变量 = 方法名称(实参...);

代码示例

public static void main(String[] args) {
    int a = 20;
    int b = 30;
    int c = add(a,b);//方法的调用
    System.out.println(c);
}

//方法的定义
public static int add(int a,int b) {
    return a + b;
}

结果为:

image-20210805094220832

注意事项

  1. 方法定义时,参数可以没有,每个参数要指定类型。

  2. 方法定义时,返回值也可以没有,如果没有返回值,则返回值类型应写成 void。

  3. 方法定义时的参数称为"形参",方法调用时的参数称为 “实参”。

  4. 方法的定义必须在类之中, 代码书写在调用位置的上方或者下方均可。

  5. Java 中没有 “函数声明” 这样的概念。

方法的调用

调用规则

  1. 定义方法的时候,不会执行方法的代码。只有调用的时候才会执行。

  2. 当方法被调用的时候,会将实参赋值给形参。

  3. 参数传递完毕后,就会执行到方法体代码。

  4. 当方法执行完毕之后(遇到 return 语句),就执行完毕,回到方法调用位置继续往下执行。

  5. 一个方法可以被多次调用。

代码示例

public static void main(String[] args) {
    int a = 20;
    int b = 30;
    int c = add(a,b);
    System.out.println("c = " + c);
    int d = add(a,c);
    System.out.println("d = "+ d);
    int e = add(c,d);
    System.out.println("e = "+ e);
}

public static int add(int a,int b) {
    return a + b;
}

结果为:

image-20210805100025612

方法的重载

引例

如果我们需要一个计算两个整型之和的方法,那么我们可以这样定义:

public static int addInt(int a,int b) {
        return a + b;
}

如果我们需要一个计算两个double型之和的方法,那么我们可以这样定义:

public static double addDouble(double a, double b) {
        return a + 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 void main(String[] args) {
    int a = 20;
    int b = 30;
    double c = 5.4;
    double d = 7.8;
    System.out.println(add(a,b));
    System.out.println(add(c,d));
}

public static int add(int a,int b) {
    return a + b;
}

public static double add(double a, double b) {
    return a + b;
}

结果为:

image-20210805110158073

重载规则

  1. 方法名相同
  2. 参数列表不同(参数个数和参数类型不同)
  3. 返回值不作要求
  4. 重载不是必须要在一个类当中(继承)

当两个方法的名字相同,参数也相同,但是返回值不同的时候,不构成重载。 例如:

image-20210805111007916

此时编辑器便报错。

方法递归

递归定义

一个方法在执行过程中调用自身,同时有一个趋近于终止的条件,就称为方法递归。

代码示例

public static void main(String[] args) {
    int n = 5;
    int ret = fac(n);
    System.out.println("ret = " + ret);
}

//求n的阶乘
public static int fac(int n) {
    if(n == 1) {
        return 1;
    } else {
        return n * fac(n - 1);
    }
}

执行结果为:

image-20210805113629063

递归执行过程分析

例如上面这段代码,它的执行过程如下:

image-20210805154125359

更简洁的解释如下:

image-20210805155020536

所有的递归都可以这样分析。

本篇博客到此结束。

上一篇博客:Java学习苦旅(四)——Java代码的三根顶梁柱

下一篇博客预告:Java学习苦旅(六)——不一样的数组

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值