当前位置: 首页 > 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. 小结

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

相关文章:

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

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. 方法的含义 1.1 例子 1.2 方法的概念 2. 方法的定义 3. 实参和形参 3.1 实参和形参的关系 4. 方法的重载 5. 递归 5.1 递归练习 6. 小结 1. 方法的…...

JVS低代码轻应用是什么?是如何拼装的?这篇文章讲的非常详细

1.1JVS轻应用是什么&#xff1f; 轻应用与传统应用的开发过程区别 传统开发&#xff08;原生开发&#xff09;采用的方式&#xff1a;①需求了解 ②产品原型③UI设计④建库建表⑤前端还原⑥后端开发⑦前后端联调⑧功能测试⑨部署上线轻应用开发方式&#xff08;配置化拼装&…...

K210(openMV)与STM32 通信教程

目录 前言&#xff1a; 一、K210 串口部分教程 二、STM32部分 前言&#xff1a; 很多打比赛的同学&#xff0c;通常只是用K210 或者openMV来进行视觉部分的信息采集&#xff0c;传输数据给STM32&#xff08;或者其他主控那边&#xff09;进行对分析&#xff0c;对小车或者舵…...

【HarmonyOS】HMRouter使用详解(三)生命周期

生命周期&#xff08;Lifecycle&#xff09; 使用HMRouter的页面跳转时&#xff0c;想实现和Navigation一样的生命周期时&#xff0c;需要通过新建生命周期类来实现对页面对某一个生命周期的监控。 新建Lifecycle类 通过继承IHMLifecycle接口实现生命周期接口的方法重写。 通过…...

Docker 教程三 (Ubuntu Docker安装)

Ubuntu Docker 安装 Docker Engine-Community 支持以下的 Ubuntu 版本&#xff1a; Xenial 16.04 (LTS)Bionic 18.04 (LTS)Cosmic 18.10Disco 19.04 其他更新的版本…… Docker Engine - Community 支持上 x86_64&#xff08;或 amd64&#xff09;armhf&#xff0c;arm64&am…...

Redis:持久化

Redis&#xff1a;持久化 持久化RDBdump.rdb优缺点 AOF文件同步重写机制 混合持久化 持久化 虽然Redis是一个内存级别的数据库&#xff0c;但是Redis也是有持久化的能力的。当系统崩溃时&#xff0c;Redis就会被强制退出&#xff0c;此时内存中的数据就会丢失。为了能够在下次…...

精准监控,高效运营 —— 商品信息实时分析为商家带来新机遇

在现代商业环境中&#xff0c;精准监控和高效运营是商家成功的关键。通过实时分析商品信息&#xff0c;商家可以洞察市场趋势、优化库存管理、提升销售策略&#xff0c;从而抓住新的商业机遇。本文将介绍如何利用Python和一些流行的数据分析工具来实现商品信息的实时分析&#…...

Nginx应用配置实战

Nginx通用部署 Nginx常见参数介绍 Nginx 配置文件中的指令和参数决定了它的行为。下面详细介绍一些常见的 Nginx 参数&#xff0c;以帮助你更好地理解和配置 Nginx。 1. worker_processes worker_processes auto;作用&#xff1a;设置 Nginx 处理请求的工作进程数量。auto …...

html实现倒计时

参考网址 <!DOCTYPE html> <html> <head><title>倒计时示例</title> </head> <body><h1 id"titleCountDown"></h1><div id"countdown"></div><script>// 目标日期var targetDat…...

HTMLCSS练习

1) 效果如下 2) 代码如下 2.1) HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" conte…...

LeetCode讲解篇之377. 组合总和 Ⅳ

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 总和为target的元素组合个数 可以由 总和为target - nums[j]的元素组合个数 转换而来&#xff0c;其中j为nums所有元素的下标 而总和target - nums[j]的元素组合个数 可以由 总和为target - nums[j] - nums[k]的…...

Midjourney中文版:创意无限,艺术之旅由此启程

Midjourney中文版——一个将你的文字想象转化为视觉艺术的神奇平台。无需繁琐的绘画技巧&#xff0c;只需简单的文字描述&#xff0c;你就能开启一场前所未有的艺术之旅。 Midjourney AI超强绘画 (原生态系统&#xff09;用户端&#xff1a;Ai Loadinghttps://www.mjdiscord.c…...

安装R和RStudio:开始你的数据分析之旅

数据分析是当今世界中一个非常热门的领域&#xff0c;而R语言是进行数据分析的强大工具之一。R是一种编程语言和软件环境&#xff0c;用于统计计算和图形表示。RStudio是一个集成开发环境&#xff08;IDE&#xff09;&#xff0c;它为R语言提供了一个更加友好和高效的工作环境。…...

如何使用python连接数据库?

数据分析离不开数据库&#xff0c;如何使用python连接数据库呢&#xff1f;听我娓娓道来哈 该笔记参考了PyMySQL官方文档和《python数据采集》关于数据存储的部分&#xff0c;欢迎大家去阅读原著&#xff0c;相信会理解的更加透彻。 补充&#xff1a;文末增加Oracle数据库的连…...

停车位识别数据集 图片数量12416张YOLO,xml和txt标签都有; 2类类别:space-empty,space-occupied;

YOLO停车位识别 图片数量12416张&#xff0c;xml和txt标签都有&#xff1b; 2类类别&#xff1a;space-empty&#xff0c;space-occupied&#xff1b; 用于yolo&#xff0c;Python&#xff0c;目标检测&#xff0c;机器学习&#xff0c;人工智能&#xff0c;深度学习&#xff0…...

MySQL 创建子账号

1. 使用 root 账号登录 MySQL 使用 root 账号登录 MySQL&#xff0c;登录成功如图所示&#xff1a; 新建一个 MySQL 子账号&#xff0c;新建子账号命令如下&#xff1a; 命令 : CREATE USER testlocalhost IDENTIFIED BY 123456;若出现如下图所示&#xff0c;则表示新建 MySQL…...

代码随想录 106. 岛屿的周长

106. 岛屿的周长 #include<bits/stdc.h> using namespace std;int main(){int n, m;cin >> n >> m;vector<vector<int>> mp(n, vector<int>(m, 0));for (int i 0; i < n; i){for (int j 0; j < m; j){cin >> mp[i][j];}}in…...

阿里云融合认证中的App端一键登录能力

在如今的移动互联网环境中&#xff0c;App端的一键登录功能逐渐成为提升用户体验的关键。用户不再需要繁琐的注册流程或输入短信验证码&#xff0c;一键即可通过手机号码完成登录。而阿里云融合认证中&#xff0c;一键登录能力为移动应用提供了一个简单、便捷且安全的用户身份验…...

基于YOLO11/v10/v8/v5深度学习的安检X光危险品检测与识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…...

vue-插槽作用域实用场景

vue-插槽作用域实用场景 1.插槽1.1 自定义列表渲染1.2 数据表格组件1.3 树形组件1.4 表单验证组件1.5 无限滚动组件 1.插槽 插槽感觉知道有这个东西&#xff0c;但是挺少用过的&#xff0c;每次看到基本都会再去看一遍用法和概念。但是在项目里&#xff0c;自己还是没有用到过…...

【RT-DETR涨点改进】TGRS 2026 | 全网独家创新、特征融合改进篇| 引入STSAM协同时空注意力融合模块,发论文热点创新,注意力能够互相引导强化边界和结构细节,增强目标检测高效涨点

一、本文介绍 🔥本文给大家介绍使用 STSAM协同时空注意力融合模块 改进RT-DETR网络模型,STSAM 是 空间域特征增强模块,通过全局跨时相注意力和局部坐标注意力的并行处理,能有效聚焦真实变化目标,强化边界和结构细节,同时兼顾训练稳定性,为后续浅层特征融合提供高质量特…...

百川2-13B-4bits开源大模型镜像免配置优势:内置check.sh脚本实现7维度健康检查

百川2-13B-4bits开源大模型镜像免配置优势&#xff1a;内置check.sh脚本实现7维度健康检查 1. 为什么说这个镜像"开箱即用"&#xff1f; 如果你之前部署过大语言模型&#xff0c;肯定经历过这些头疼事&#xff1a;环境配置报错、依赖包冲突、端口被占用、GPU显存不…...

`claude code --print` 核心含义与用法指南

claude code --print 核心含义与用法指南 --print(简写为-p)是Claude Code CLI的非交互模式参数,用于执行单个查询后直接输出结果并退出,不进入交互式会话。这是自动化脚本、管道操作和CI/CD集成的核心工具。 一、核心定义与作用 特性 说明 全称/简写 --print / -p 核心功…...

Wan2.2-I2V-A14B Java开发集成指南:SpringBoot后端服务调用

Wan2.2-I2V-A14B Java开发集成指南&#xff1a;SpringBoot后端服务调用 1. 引言 如果你是一名Java后端开发者&#xff0c;正考虑将AI视频生成能力集成到现有系统中&#xff0c;这篇教程就是为你准备的。我们将手把手教你如何在SpringBoot项目中调用私有化部署的Wan2.2-I2V-A1…...

7款AI论文写作工具推荐:爱毕业aibiye等平台提供自动排版及LaTeX模板适配

工具快速对比排名&#xff08;前7推荐&#xff09; 工具名称 核心功能亮点 处理时间 适配平台 aibiye 学生/编辑双模式降AIGC 1分钟 知网、万方等 aicheck AI痕迹精准弱化查重一体 ~20分钟 知网、格子达、维普 askpaper AIGC率个位数优化 ~20分钟 高校检测规则通…...

Gitee与奇安信代码卫士的Java安全扫描实战指南

1. 为什么Java项目需要安全扫描&#xff1f; 最近几年&#xff0c;随着数字化转型加速&#xff0c;Java应用的安全问题越来越受到重视。我见过太多因为代码漏洞导致的数据泄露事件&#xff0c;很多都是因为开发过程中忽视了基础的安全检查。就拿去年某知名电商平台的用户信息泄…...

[AI/Agent/社交] AI Agent社交网络产品:MoltBook => InStreet

Julia&#xff08;julialang.org&#xff09;由Stefan Karpinski、Jeff Bezanson等在2009年创建&#xff0c;目标是融合Python的易用性、C的高性能、R的统计能力、Matlab的科学计算生态。 其核心设计哲学是&#xff1a; 高性能&#xff1a;编译型语言&#xff08;JIT&#xff0…...

PWM技术原理与工程实践全解析

1. PWM技术基础解析脉冲宽度调制&#xff08;PWM&#xff09;作为现代电子电力控制的核心技术&#xff0c;其本质是通过调节脉冲信号的导通时间比例来实现对功率的有效控制。我第一次接触这个概念是在调试直流电机调速项目时&#xff0c;当时被其精妙的设计思想所震撼。1.1 关键…...

SEO_本地中小企业快速见效的SEO操作指南(345 )

SEO:本地中小企业快速见效的SEO操作指南 在当今数字化时代&#xff0c;本地中小企业如何在竞争激烈的市场中脱颖而出&#xff0c;是每一个企业主都需要面对的问题。本文将从多个角度为你详细解析如何通过SEO&#xff08;搜索引擎优化&#xff09;让本地中小企业迅速见效。 问…...

量化交易backtrader实践(二)_数据预处理篇(1)_格式转换与清洗

1. 数据预处理的重要性 在量化交易中&#xff0c;数据预处理就像做菜前的食材准备阶段。想象一下&#xff0c;如果你要做一道红烧肉&#xff0c;却直接拿刚从冰箱取出的冻肉下锅&#xff0c;结果可想而知。同样地&#xff0c;未经处理的原始金融数据直接喂给backtrader&#xf…...