javaSE: 方法的使用

目录

1. 方法的使用

1.1 什么是方法(method)

1.2 方法的语法

1.3 方法的使用

2. 方法的重载

2.1 方法重载的规则

2.2 代码示例

3. 方法的重写

3.1 关于重写的规则

3.2 方法重写代码示例

3.3 重写的注意事项

4. 重载和重写的区别

4.1 重载

4.2 重写

5. 方法的递归

5.1 递归的概念

5.2 代码示例:递归求N的阶层

5.3 递归执行过程图

5.4 递归小结


1. 方法的使用

1.1 什么是方法(method)

方 法 就 是 一 个 代 码 片 段. 类 似 于 C 语 言 中 的 " 函 数 ".

方法存在的意义(不要背, 重在体会):

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

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

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

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

1.2 方法的语法

// 方法定义

public static 方法返回值 方法名称([参数类型 形参 ...]){
 方法体代码;
 [return 返回值];
}

// 方法调用

返回值变量 = 方法名称(实参...);

1.3 方法的使用

//实现两个整数相加
public class Demo {
    public static int add(int x, int y) {
        return x+y;
    }

    public static void main(String[] args) {
        int ret = add(10,20);
        System.out.println("ret = " + ret);
    }
}
// ret = 30

2. 方法的重载

在一些特定的情况下我们需要用一个函数同时兼容多种参数的情况, 我们就可以使用到方法重载.

2.1 方法重载的规则

方法名相同

参数列表不相同(数据类型,顺序,个数)

返回值与判断条件无关

2.2 代码示例

// 通过方法的重载 实现 两个整数/三个整数 相加

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

    public static void main(String[] args) {
        int ret = add(10,20);
        System.out.println("ret = " + ret);
        int ret2 = add(10,20,30);
        System.out.println("ret2 = " + ret2);
    }
}

//返回值
//ret = 10
//ret2 = 60

3. 方法的重写

3.1 关于重写的规则

1. 重写和重载完全不一样. 不要混淆

2. 普通方法可以重写, static 修饰的静态方法不能重写

3. 重写中子类的方法的访问权限不能低于父类的方法访问权限

4. 重写的方法返回值类型不一定和父类的方法相同(但是建议最好写成相同, 特殊情况除外).

3.2 方法重写代码示例

// 定义一个Student类
public class Student {
    public String name;
    public int age;
    public Student(String name,int age) {
        this.name = name;
        this.age = age;
    }
}
// 实例化一个对象
public class Demo2 {
    public static void main(String[] args) {
        Student student = new Student("张三",18);
        System.out.println(student);
    }
}
// 输出结果
// Student@3b07d329
// 我们发现这里打印的是一个地址的哈希值 原因:调用的是Object的toString方法

我们通过后面的学习可以知道,我们自己定义的类是默认继承Object类的

当我们对 toString 方法重写后,我们在mian方法中调用toString 方法就好使用我们重写后的toString 方法

3.3 重写的注意事项

  • toString 方法会在 println 的时候被自动调用.
  • 将对象转成字符串这样的操作我们称为 序列化.
  • toString 是 Object 类提供的方法, 我们自己创建的 Person 类默认继承自 Object 类, 可以重写 toString 方法实 现我们自己版本的转换字符串方法.
  • @Override 在 Java 中称为 "注解", 此处的 @Override 表示下面实现的 toString 方法是重写了父类的方法.
  • IDEA快速生成Object的toString方法快捷键:alt+insert(然后选择toString)

4. 重载和重写的区别

4.1 重载

方法名相同

产生列表不相同(数据类型,顺序,个数)

与返回值无关

4.2 重写

方法名相同

产生列表相同

返回值相同

5. 方法的递归

5.1 递归的概念

递归就是函数调用自己本身,将大事情化成小事情就是规

例如, 我们求 N!

起始条件: N = 1 的时候, N! 为 1. 这个起始条件相当于递归的结束条件.

递归公式: 求 N! , 直接不好求, 可以把问题转换成 N! => N * (N-1)!

5.2 代码示例:递归求N的阶层

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

public static int factor(int n) {
    if (n == 1) {
        return 1;
   }
    return n * factor(n - 1); // factor 调用函数自身

}

// 执行结果

//ret = 120

5.3 递归执行过程图

程序按照序号中标识的 (1) -> (8) 的顺序执行.

5.4 递归小结

  • 递归是一种重要的编程解决问题的方式.
  • 有些问题天然就是使用递归方式定义的(例如斐波那契数列, 二叉树等), 此时使用递归来解就很容易.
  • 有些问题使用递归和使用非递归(循环)都可以解决. 那么此时更推荐使用循环, 相比于递归, 非递归程序更加高效.
  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北故人9413

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值