当前位置: 首页 > news >正文

【Java SE】方法 和 递归 的应用

 🔥博客主页🔥:【 坊钰_CSDN博客 】

欢迎各位点赞👍评论✍收藏⭐

目录

1. 方法的含义

1.1 例子

1.2 方法的概念

2. 方法的定义

3. 实参和形参

3.1 实参和形参的关系

4. 方法的重载

 5. 递归

 5.1 递归练习

6. 小结


 

1. 方法的含义

1.1 例子

我们先举一个例子:

假设有一位老师 “张三” ,在一次考试后,有一道题很难,那么学生 1 来问老师这道题咋写,学生 2 也来问老师咋写,学生 3 也来问老师咋写,很多学生都来问,这是老师想不可能给每一位学生都单独讲一遍,于是老师把这道题的解析录成一个视频,让学生们都去看,这样就解决了这个问题

  • 这样老师把这个问题整理成视频,减少了时间的浪费
  • 学生们自己点击视频,问题得到解决
  • 老师避免一个一个学生去讲解

在编程中也有一样的思想,某一个功能需要反复使用,一遍一遍写出来又太过冗余,所以将这个功能封装起来(叫做 “方法”),需要它时,直接调用即可,节省了消耗

1.2 方法的概念

Java 中的 方法 其实就类似与 C 语言中的 函数,用来解决一些反复使用的 代码段

例:判断一个产品的重量是否达到标准 ( 0 < 重量 <10 为合格,重量 > 10 不合格 )

public class Test {public static void main(String[] args) {//产品1int product1 = 4;if(product1 > 0 && product1 < 10) {System.out.println("合格");} else {System.out.println("不合格");}//产品2int product2 = 12;if(product1 > 0 && product1 < 10) {System.out.println("合格");} else {System.out.println("不合格");}//产品3int product3 = 6;if(product1 > 0 && product1 < 10) {System.out.println("合格");} else {System.out.println("不合格");}}
}

这样每有一个产品,就要判断一下,代码中重复代码较多,那么这就可以用 方法 来优化

2. 方法的定义

//方法的定义修饰符 返回值 方法名称(参数类型 形式参数) {代码块(代码实现)return 返回值;
}

知道定义之后,就可以用方法来优化上面的例子

public class Test {//封装方法来检查是否合格public static void productCheak(int height) {if(height > 0 && height < 10) {System.out.println("合格");} else {System.out.println("不合格");}}public static void main(String[] args) {//多组产品int product1 = 4;productCheak(product1);int product2 = 13;productCheak(product2);int product3 = 8;productCheak(product3);}
}

运行结果

 

这样优化之后,代码结构更加清晰了然,这就是方法的作用

3. 实参和形参

例;交换两个数的值

public class Test {public static void swap(int x, int y) {   //这里的 x y 为形式参数int ret = x;x = y;y = ret;}public static void main(String[] args) {int a = 10;int b = 20;System.out.println("交换前");System.out.println(a + " " + b);swap(a, b);                          //这里的 a b 为形式参数System.out.println("交换后");System.out.println(a + " " + b);}}

运行结果

这我们发现,代码是没错的,但是 a  b   却没有交换,这是为什么?这就要探讨实参和形参的关系了

3.1 实参和形参的关系

在内存中,形参和实参是两个不同的实体,实参有一份空间,形参也有一份空间,形参把实参临时拷贝到自己的空间中,在自己的一份空间执行操作,不会影响实参的空间和内容,这就是为什么上述 a b 没有交换成功的原因,下面图解:

4. 方法的重载

在我们日常生活中,存在着一词多义的现象,例:

粉丝:可以指的是 某个明星有很多粉丝,还可以指 吃火锅时的 粉丝

那么在我们编程的方法中,一个方法也可以处理不用形参下的情况,这种就叫做方法的重载

 例:写一个既能算整数相加也能算小数相加的重载方法 add

public class Test {public static int add(int x, int y) {return x + y;}public static double add(double x, double y) {return x + y;}public static void main(String[] args) {//整数int a = 1;int b = 5;int c = add(a, b);System.out.println(c);//小数double m = 1.9;double n = 4.3;double h = add(n, m);System.out.println(h);}}

运行结果

方法重载的注意事项

  • 方法名必须相同
  • 参数列表必须不同(形参的类型,个数)
  • 与返回值无关 

 5. 递归

递归着两个字的含义

:依次进行下去    :在依次归递回来

递归就一句话:自己调用自己

例;正打印一个数字每一位,(例:1234     打印 1 2 3 4)

  • 我们可以想要打印 1234 每一位,我们拆开
  • 先打印 1 在打印 234 每一位
  • 在打印 2 在打印 34 每一位
  • 在打印 3 在打印 4 每一位
public class Test {public static void print(int n) {if(n > 10) {print(n / 10);}System.out.print(n % 10 + " ");}public static void main(String[] args) {int n = 1234;print(n);}
}

运行结果

 图解:(反复理解 “递” 和 “归” 的含义)

 5.1 递归练习

  • 斐波那契数列问题
  • 青蛙跳台问题
  • 汉诺塔问题

这些都不一一讲解了,有兴趣的可以自行研究,我往期博客也有

6. 小结

以上就是对方法和递归的了解,具体还需宝子们去实践,如果觉得该博客对你有用的话,希望一键三连,点个关注不迷路,谢谢支持! 

http://www.lryc.cn/news/458533.html

相关文章:

  • JVS低代码轻应用是什么?是如何拼装的?这篇文章讲的非常详细
  • K210(openMV)与STM32 通信教程
  • 【HarmonyOS】HMRouter使用详解(三)生命周期
  • Docker 教程三 (Ubuntu Docker安装)
  • Redis:持久化
  • 精准监控,高效运营 —— 商品信息实时分析为商家带来新机遇
  • Nginx应用配置实战
  • html实现倒计时
  • HTMLCSS练习
  • LeetCode讲解篇之377. 组合总和 Ⅳ
  • Midjourney中文版:创意无限,艺术之旅由此启程
  • 安装R和RStudio:开始你的数据分析之旅
  • 如何使用python连接数据库?
  • 停车位识别数据集 图片数量12416张YOLO,xml和txt标签都有; 2类类别:space-empty,space-occupied;
  • MySQL 创建子账号
  • 代码随想录 106. 岛屿的周长
  • 阿里云融合认证中的App端一键登录能力
  • 基于YOLO11/v10/v8/v5深度学习的安检X光危险品检测与识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
  • vue-插槽作用域实用场景
  • Prometheus+Grafana 监控 K8S Ingress-Ningx Controller
  • 如何在Visual Studio 2019中创建.Net Core WPF工程
  • 自然语言处理(NLP)论文数量的十年趋势:2014-2024
  • .net core API中使用LiteDB
  • YOLO_V8分割
  • 根据请求错误的状态码判断代理配置问题
  • Python 网络爬虫高阶用法
  • 芯片Tapeout前GDS Review | Calibre中如何切出gds中指定区域版图?
  • 43 | 单例模式(下):如何设计实现一个集群环境下的分布式单例模式?
  • PHP如何解决异常处理
  • C++ socket编程(3)