Java【方法】,方法重载,方法递归,你都会了吗?

文章目录

  • 前言
  • 一、方法的概念和使用?
    • 1.什么是方法
    • 2.方法的调用
    • 3.形参与实参的关系(重要)
  • 二、方法的重载
    • 1.什么是方法的重载
    • 2.为什么要方法重载
  • 三、方法的递归
    • 1.什么是方法的递归
    • 2.斐波那契数列
  • 总结


前言

各位读者好, 我是小陈, 这是我的个人主页
小陈还在持续努力学习编程, 努力通过博客输出所学知识
如果本篇对你有帮助, 烦请点赞关注支持一波, 感激不尽
希望我的专栏能够帮助到你:
JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等
Java数据结构: 顺序表, 链表, 堆, 二叉树, 二叉搜索树, 哈希表等
JavaEE初阶: 多线程, 网络编程, TCP/IP协议, HTTP协议, Tomcat, Servlet, Linux, JVM等(正在持续更新)

上篇介绍了Java【逻辑控制语句】,本篇将继续介绍【方法】的相关内容,记录自己学习的进程的同时整理知识点分享给和我一样的初学者,希望能帮助到大家~


提示:是正在努力进步的小菜鸟一只,如有大佬发现文章欠佳之处还请多多指点~ 废话不多说,直接上干货!下面案例可供参考

一、方法的概念和使用?

1.什么是方法

方法就是一段代码块,学过C语言的小伙伴就可以理解为Java中的方法相当于C中的函数。方法存在的意义是:

  1. 是能够模块化的组织代码(当代码规模比较复杂的时候).
  2. 做到代码被重复使用, 一份代码可以在多个位置使用.
  3. 让代码更好理解更简单.
  4. 直接调用现有方法开发, 不必重复造轮子.

2.方法的调用

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

Java【方法】,方法重载,方法递归,你都会了吗?_第1张图片
注意:
1、现阶段修饰符直接使用public static固定搭配
2、返回值类型必须与接收返回值的变量的类型一致(如图中的ret接收add函数返回值)
3、方法名用小驼峰命名格式,举例:
大驼峰:LoveYOU,小驼峰:loveYou
4、如果没有参数,可以不写,如果有,必须指定类型,多个参数逗号隔开
5、方法必须在类中定义,且不能嵌套定义
6、自定义方法和main方法谁在上谁在下都无所谓、java中没有方法声明这一说

3.形参与实参的关系(重要)

例如,交换 a 和 b 的值:
Java【方法】,方法重载,方法递归,你都会了吗?_第2张图片
我们发现实际上 a 和 b 的值并没有被交换。

先来了解一下什么是实参,什么是形参:
上述代码中,在 main 方法中定义变量 a、b 的时候,为 a、b 分配了内存空间,而调用 swap 方法时,将 a 、 b 传给 swap 方法,用 x、y 接收 a、 b,实际上又为x、y分配了内存空间,将a、b的值分别赋给x、y
调用 swap 方法结束之后,整个swap的栈帧空间(内存)会被回收,包括x ,y 的内存。

总结:
传递给方法的 a 、b就是实参,而在 swap 方法中的 x 、y 就是形式参数。
所以形参只是实参的临时拷贝
形参只是方法在定义时需要借助的一个变量,用来保存方法在调用时传递过来的值。

话在说回来,为什么a、b没有被调换成功呢?
就是因为形参只是实参的临时拷贝
swap 方法中,确实调换成功了,把 x、y 成功调换了,但和 a、b 没有任何关系。

那如何解决呢?暂时先不讲,先主要理解形参和实参的关系即可。

二、方法的重载

1.什么是方法的重载

在Java中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了。
例如:
Java【方法】,方法重载,方法递归,你都会了吗?_第3张图片
可以看到,定义了三个方法:两个整形求和,两个浮点型求和,三个浮点型求和,这三个方法名都是add,这就是方法重载。

有几点需要注意:

  1. 方法名必须相同
  2. 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
  3. 与返回值类型是否相同无关
  4. 编译器在编译代码时,会对实参类型进行推演,根据推演的结果来确定调用哪个方法

2.为什么要方法重载

原因显而易见

就比如我要写一个求两个整形的和的方法,但这个方法并不适用与浮点型,如果我的参数是浮点型,就必须再写一个求两个浮点型相加的方法,那如果我有三个参数呢?又需要重新写…

仅仅针对 “求和” 这个事,我有什么样的需求就要写什么样的方法,但取名是个问题,为了提高敲代码效率和可读性,诞生出了方法重载

三、方法的递归

1.什么是方法的递归

在讲递归之前,大家一定都听过这样一个故事:
从前,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,讲的就是:
从前,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,讲的就是:
从前,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,讲的就是:
…反正就是,用通俗易懂的词概括就是套娃

递归是什么?
程序自己调用自己的过程,且把一个复杂的问题转化成比较简单,且解决原理相同的问题求解

递归的思想就是:
有些时候,我们遇到的问题直接并不好解决,但是发现将原问题拆分成其子问题之后,子问题与原问题有相同的解法,等子问题解决之后,原问题就迎刃而解了。


例如:
要求 5 的阶乘:可以转化成 5 * 4 的阶乘
要求 4 的阶乘:可以转化成 4 * 3 的阶乘
要求 3 的阶乘:可以转化成 3 * 2 的阶乘

我们把 5 的阶乘,转化成求 5 * 4 的阶乘,就是把大的问题转化成简单且原理相同的小问题。

要想理解递归,首先就得知道方法是如何调用、执行的
方法结束以后,回到调用此方法的位置继续执行还未执行的代码

下图是代码 + 解析:
(n=3)
Java【方法】,方法重载,方法递归,你都会了吗?_第4张图片
这里提醒大家,递归还要有两个条件:
1、
满足终止条件时停止递归
(如上图的(n == 1))
2、
每一次递归都更加靠近终止条件

递归必须满足这两个条件,否则会死递归导致栈溢出

2.斐波那契数列

Java【方法】,方法重载,方法递归,你都会了吗?_第5张图片
Java【方法】,方法重载,方法递归,你都会了吗?_第6张图片

所以,递归也是有缺陷的,有些情况下尽管可以使用递归解决,但并不合适。

并且递归能干的事情,for循环可以干,但for循环可以干的事情,递归不一定能干,需要随着对代码的理解,视情况而定使用哪一种方式解决问题。

而递归的牛X之处就在于:合适的情况下可以用极少的代码解决问题。


总结

以上就是今天要讲的关于【方法】的内容,主要介绍了方法的定义和使用,方法的重载,方法的嵌套,这些你掌握了吗~

如果本篇对你有帮助,请点赞收藏支持一下,小手一抖就是对作者莫大的鼓励啦~


上山总比下山辛苦
下篇文章见

你可能感兴趣的:(Java基础,java,开发语言,方法重载,递归)