Java基础学习笔记-5
前言
Java编程语言是一门广泛应用于软件开发领域的高级编程语言。它的强大特性和跨平台性使其成为许多开发者的首选语言。本文将介绍一些Java编程的关键概念,包括函数重载、可变参数、值传递、递归等,这些概念是Java编程的基础,对于理解和掌握Java语言至关重要。
Java基础学习笔记-1
Java基础学习笔记-2
Java基础学习笔记-3
Java基础学习笔记-4
1. 函数重载(Function Overloading)
函数重载是一种 Java 编程中的常见概念,它允许在同一个类中定义多个具有相同名称但不同参数列表的方法。以下是一个函数重载的示例:
public class Demo01 {public static void main(String[] args) {f01(1.0);f01(1);}public static void f01(double money) {System.out.println("f01(double money) 被调用了");}public static int f01(int age) {System.out.println("f01(int age) 被调用了");return 100;}
}
请注意,函数重载与返回值无关,只与参数列表有关。
2. 可变参数(Varargs)
可变参数是 Java 中一种强大的功能,允许方法接受不定数量的参数。以下是一个可变参数的示例:
public class Demo02 {public static void main(String[] args) {f01(new int[]{1,3,5,7,9});f01();f01(1);f01(1, 2);f01(1, 2, 3);}public static void f01(int... x) {System.out.println("f01(int...) 被调用了");System.out.println(Arrays.toString(x));}
}
无论传递多少参数,可变参数方法将它们视为一个整数数组。
3. 可变参数与增强型for循环
在 Java 中,可变参数与增强型for循环可以结合使用,以处理不定数量的参数。以下是一个示例:
public class Demo03 {public static void main(String[] args) {f01(new int[]{1,3,5,7,9});f01();f01(1);f01(1, 2);f01(1, 2, 3);}public static void f01(int... arr) {System.out.println("f01(int...) 被调用了");// 自动循环arr数组,也知道何时结束,每次取出一个送到变量a上for (int a : arr) { // foreach输出(增强版for循环),没有下标了System.out.println(a);}}
}
上面的示例演示了如何使用可变参数来接受不定数量的整数参数,并且使用增强型for循环遍历这些参数。这使得处理不定数量的参数变得更加方便。
4. 基本数据类型的值传递
在 Java 中,基本数据类型的传递是按值传递的,这意味着方法接收的是原始值的副本,而不是原始变量本身。以下是一个示例:
public class Demo04 {public static void main(String[] args) {int y = 10;f01(y); // y实参。都是值传递。System.out.println("Y:" + y);}/*x,形参*/public static void f01(int x) {System.out.println(x);x++;System.out.println(x);}
}
在这个示例中,f01
方法接收了变量y
的值,然后对这个值进行了操作。但是,这不会影响到原始变量y
的值,因此在打印y
时仍然输出10。
5. 数组的值传递
与基本数据类型不同,数组在传递给方法时也是按值传递的。然而,数组的值是数组的引用,而不是数组的内容。这意味着在方法内对数组的操作会影响到原始数组。以下是一个示例:
import java.util.Arrays;public class Demo05 {public static void main(String[] args) {int[] y = {10, 20, 30};f01(y); // y实参。都是值传递。System.out.println("y: " + Arrays.toString(y));}/*x,形参*/public static void f01(int[] x) {System.out.println(Arrays.toString(x));x[1]++;System.out.println(Arrays.toString(x));}
}
在这个示例中,f01
方法接收了整数数组y
的引用。当在方法内部修改数组元素时,原始数组也会受到影响,因此在打印y
时,第二个元素的值已经被修改。
6. 递归列出文件
在 Java 编程中,递归是一种强大的技术,可用于处理文件和目录的层次结构。以下是一个示例程序,演示如何递归地列出指定目录下的所有文件和子目录中的文件:
import java.io.File;public class Demo06 {public static void main(String[] args) {showFiles(new File("D:\\202203\\正科\\08_补充\\附件\\a"));}/*展示文件夹下所有的文件,包含子文件夹下的文件*/public static void showFiles(File file) {File[] files = file.listFiles(); // 枚举该文件夹file对象下的文件或文件夹对象for (File f : files) {if (f.isFile()) System.out.println(f.getName()); // 文件if (f.isDirectory()) showFiles(f); // 递归调用文件夹}}
}
这个示例中,我们使用了递归方法showFiles
来遍历指定目录下的所有文件和子目录。具体步骤如下:
showFiles
方法接受一个File
对象作为参数,该对象表示要列出文件的目录。- 使用
listFiles
方法获取目录下的所有文件和子目录,并将它们存储在files
数组中。 - 使用增强型for循环遍历
files
数组中的每个文件或目录。 - 对于每个元素,我们检查它是否是一个文件(
f.isFile()
)。如果是文件,我们打印文件名。 - 如果元素是一个目录(
f.isDirectory()
),则递归调用showFiles
方法,以便继续遍历该目录的内容。
这个示例展示了如何使用递归来处理文件和目录结构,是处理文件系统操作的常见用例之一。
7. 递归求和
递归是一种函数调用自身的编程技巧。以下是一个递归的示例:
public class Demo07 {public static void main(String[] args) {System.out.println(sum(100));}public static int sum(int count) {if (count == 1) return 1; // 结束条件return sum(count-1) + count; // 递归表达式}
}
这个示例演示了一个递归函数sum,它从1递归到给定的正整数count并计算总和。递归的结束条件是count等于1,然后通过递归表达式sum(count-1) + count计算总和。
递归是一种强大的编程技巧,可以用于解决许多问题,但需要小心处理递归的结束条件,以避免无限递归。
总结
本文详细介绍了Java编程中的几个重要概念,包括函数重载、可变参数、值传递和递归。这些概念是Java编程的基础,对于编写高效、灵活的Java代码至关重要。通过学习本文中的示例和解释,读者可以更好地掌握这些概念,提高自己的Java编程技能。无论是初学者还是有经验的开发者,都可以从本文中获得有价值的知识,帮助他们在Java编程领域取得成功。在未来的项目中,这些概念将成为解决复杂问题和开发强大应用程序的重要工具。
相关文章:
Java基础学习笔记-5
前言 Java编程语言是一门广泛应用于软件开发领域的高级编程语言。它的强大特性和跨平台性使其成为许多开发者的首选语言。本文将介绍一些Java编程的关键概念,包括函数重载、可变参数、值传递、递归等,这些概念是Java编程的基础,对于理解和掌…...
合同交付类项目如何高效管理?
美国项目管理协会(PMI)保罗格蕾斯曾说:“当今社会,一切都是项目,一切也将成为项目。”在“万事皆项目”的背景下,企业在运营过程中会产生大量的项目型业务活动,例如:举办市场活动、产品研发、进行企业内训、采购招标、工程建设等等。那么按照…...
两性养生网站源码 生活类减肥网站源码 健康网模板源码 支持QQ登录和百度主动推送
本套模板非常适合生活类,两性类,减肥类等等类型的网站,这类型网站比较好做流量,因为客户群体众多, 可以自行改内容为其他类型网站模板总体非常简洁漂亮,配色合理,视觉舒服,并且配合…...
CentOS7安装Jenkins(更改默认运行的端口号8080->16060)
第一步: 端口号为默认8080 的安装是:Jenkins安装配置 第二步:将默认运行端口8080—>16060 首先修改配置文件 修改配置文件:vi /etc/sysconfig/jenkins修改内容:# 服务监听端口JENKINS_PORT"16060"然后…...
Java开发之Mysql【面试篇 完结版】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、知识体系二、Mysql-优化1. 优化-如何定位慢查询① 问题引入② 解决方案③ 问题总结④ 实战面试 2. 优化-sql执行很慢,如何解决① 问题引入② 解…...
【实战】十二、自动化测试 —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十九)
文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表三、TS 应用:JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…...
【人月神话】重新探索人月神话:软件工程的现实与挑战
人月神话是一篇由美国软件工程师弗雷德里克布鲁克斯所写的软件工程经典之作,最早发表于1975年。这篇文章的全名是《人月神话:软件工程的神话与现实》(The Mythical Man-Month: Essays on Software Engineering),它涵盖…...
电阻和电容
目录 1、常见的电阻器 2、电容 编辑 1、常见的电阻器 对于电阻需要了解三个参数(查询电阻的数据手册): 1、封装:就是电阻的尺寸或者大小,看焊在你的pcb板上是否合适。 2、标称:电阻的电阻大小、精度、…...
01-Java-日志框架
1 日志技术概述 1.1 什么是日志技术 日志技术是一种记录和存储应用程序运行时信息的技术。它可以捕获应用程序的状态、事件、错误和警告等信息,并将其保存到日志文件或其他存储介质中。日志技术可以帮助开发人员和运维团队了解应用程序的运行情况,进…...
【js】map、filter、reduce、fill(待补充...)
const arr [{ id: 1, flag: true },{ id: 2, flag: true },{ id: 3, flag: false },{ id: 4, flag: true }, ]map:返回的是对每个元素进行操作后的结果数组,这个数组的长度和原数组相同 const result arr.map((item: any) > {return item.flag fa…...
【JPC出版】第二届能源与电力系统国际学术会议 (ICEEPS 2023)
第二届能源与电力系统国际学术会议 (ICEEPS 2023) 2023 2nd International Conference on Energy and Electrical Power Systems 第二届能源与电力系统国际学术会议 (ICEEPS 2023)将于2023年10月27日至29日在中国厦门举行。ICEEPS 将汇集能源科学、电气工程和电力系统领域的…...
51单片机的简易篮球计分器倒计时仿真设计( proteus仿真+程序+原理图+报告+讲解视频)
51单片机的简易篮球计分器倒计时仿真设计( proteus仿真程序原理图报告讲解视频) 1.主要功能:2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单&&下载链接 51单片机的简易篮球计分器倒计时仿真设计( proteus仿真程序原理图报告讲解视频…...
医院安全不良事件报告系统源码 PHP+ vue2+element+ laravel8+ mysql5.7+ vscode开发
不良事件上报系统通过 “事前的人员知识培训管理和制度落地促进”、“事中的事件上报和跟进处理”、 以及 “事后的原因分析和工作持续优化”,结合预存上百套已正在使用的模板,帮助医院从对护理事件、药品事件、医疗器械事件、医院感染事件、输血事件、意…...
Mybatis -- 读取 DATE 类型字段时可能遇到的问题(夏令时问题)
在使用 MYBATIS 读取数据库字段的时候,我们一般需要为查询字段指定数据类型。特别是当我们使用 mybatis generator 去生成对应的接口代码时,会自动按照数据库字段类型生成响应映射规则的代码。 如下,左侧是 date 类型生成的字段映射规则&…...
第10节-PhotoShop基础课程-选区工具
文章目录 前言1.矩形选区 shift 是正方形1.任意比例2.等比绘制 先点击再按shift3.中心绘制1.任意比例 先点击再按Alt2.等比绘制 先点击再按Alt Shift 4.移动选区 按住空格 2.椭圆选区1.椭圆选区2.正圆选区 shift键3.中心圆选区 Alt Shift 3.选取选项1. 选区1.建立选区2.加选 s…...
【C++】C++动态内存管理
🏳️🌈C/C内存分布 说明: 1.我们的代码并非放在代码段里的,而是以文件的形式存在磁盘上的。 代码经过编译链接形成的二进制指令,才是放进代码段里的。(即可执行代码) 2.“abcd”如果没有被c…...
Java中使用JTS实现WKT字符串读取转换线、查找LineString的list中距离最近的线、LineString做缓冲区扩展并计算点在缓冲区内的方位角
场景 Java中使用JTS对空间几何计算(读取WKT、距离、点在面内、长度、面积、相交等): Java中使用JTS对空间几何计算(读取WKT、距离、点在面内、长度、面积、相交等)_jts-core_霸道流氓气质的博客-CSDN博客 JavaGeoTools实现WKT数据根据EPSG编码进行坐标系转换&…...
【异步VS多线程】异步VS多线程区别
异步VS多线程区别 1、异步 异步概念:异步是并发编程的一种形式,在同一时刻可以独立于主程序外,可以并发执行另外一些任务。异步的实现方式有两种: 第一种:通过 async TASK来实现异步,第二种:通…...
【nosql】redis之高可用(主从复制、哨兵、集群)搭建
redis群集有三种模式 redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster集群,下面会讲解一下三种模式的工作方式,以及如何搭建cluster群集 ●主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从…...
js如何实现数组去重的常用方法
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用 Set(ES6)⭐ 使用 filter 和 indexOf⭐ 使用 reduce⭐ 使用对象属性⭐ 使用 includes 方法(ES6)⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方…...
XREAL Air 2 Pro发布,加入电致变色技术,拓展AR眼镜使用场景
【2023年9月6日 中国北京】继刚刚宣布XREAL Air在全球销量突破20万台后,全球领先的消费级AR眼镜品牌XREAL今日于中国市场正式推出XREAL Air 2系列新品。全新Air 2系列包含两款AR眼镜产品:在显示、佩戴舒适性、音频等核心维度全面升级,体验全面…...
Go基础11-理解Go语言的包导入
Go语言是使用包(package)作为基本单元来组织源码的,可以说一个Go程序就是由一些包链接在一起构建而成的。虽然与Java、Python等语言相比这算不上什么创新,但与祖辈C语言的头文件包含机制相比则是“先进”了许多。 编译速度快是这种…...
【MySQL数据库原理】在MySQL Workbench界面运行SQL代码——学生管理系统
在 MySQL Workbench 8.0 中,你可以使用以下步骤新建内容并运行 MySQL 语言代码: 1、打开 MySQL Workbench 并连接到你的 MySQL 数据库服务器。 2、在左侧的导航栏中,展开你的连接以查看数据库。选择你要在其中运行 SQL 代码的数据库。 3…...
高分三号1米分辨率飞机检测识别数据集
二、背景介绍 合成孔径雷达(Synthetic Aperture Radar, SAR) 是一种主动式的微波成像系统,它不受光照、云雾 和气候等自然条件影响,具备全天时、全天候对地 观测的能力,已成为遥感领域重要的信息获取平 台。近年来,随着遥感成像技…...
Unity 之Material 类型和 MeshRenderer 组件中的 Materials 之间有一些重要的区别
文章目录 区别代码例子 区别 在Unity中,Material 类型和 MeshRenderer 组件中的 Materials 之间有一些重要的区别。 Material 类型: Material 是 Unity 中用来定义渲染属性的资源。它包含了一系列定义了如何绘制一个对象的属性,比如颜色、纹…...
【LeetCode-简单题】977. 有序数组的平方
文章目录 题目方法一:双指针方法二: 题目 方法一:双指针 class Solution { // 方法一 :双指针public int[] sortedSquares(int[] nums) {int left 0;int right nums.length -1 ;int[] res new int[nums.length];//结果集新数组…...
【笔试强训选择题】Day39.习题(错题)解析
作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!ÿ…...
Prometheus-Alertmanager 警报管理器-部署和设置
文章目录 一、介绍二、核心概念1 Grouping 分组2 Inhibition 抑制3 Silences 静默(静音)5 High Availability 高可用性 三、部署1 二进制方式下载配置 systemd 2 docker-compose 方式 四、配置1 配置文件介绍1.1 全局配置1.2 receiver 接收器标准接收器相…...
恒运资本:小盘股的优点?投资小盘股要注意哪些方面?
股市是一个充溢时机和危险的当地,不同出资者有不同的偏好,有的人喜爱追逐大盘蓝筹股,有的人则钟情于小盘股。那么小盘股的长处?出资小盘股要注意哪些方面?恒运资本也为我们准备了相关内容,以供参考。 小盘股…...
LeetCode:2. 两数之和
这个解题思路来自代码随想录:代码随想录 (programmercarl.com) class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {std::unordered_map <int,int> map;for(int i 0; i < nums.size(); i) {// 遍历当前元素&am…...
专做国际时事评论网站/视频专用客户端app
Connection is not associated with a managed connection...
合肥网站建设是什么/seo需要会什么
12月13-14日,由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束,集中为大家分享了2017双11背后的黑科技。本文是《人工智能在搜索中的应用》演讲整理,本文首先介绍了AI如何在搜索中落地,进而重点介绍…...
做目录网站注意/营销的目的有哪些
通常项目中src下的子目录都会有一个style文件夹,专门用来存放全局的样式文件。这个style文件夹下,一般有reset.css、var.scss、mixin.scss、class.scss、index.scss一般都会在index.scss文件中引入其他文件做统一管理,并在main.js中引入index…...
官方网站建设公司排名/seo快速排名优化公司
dubbo 2.8.4 出现找不到dubbo:annotation的错误,其实这个不会影响程序正确的运行,但是看到有红叉心里肯定非常不爽: 解决办法是,将dubbo-2.8.4.jar包,后缀改成.zip,然后解压: 如果不想对xml进行…...
张家口建设委员会网站/舆情报告
1.打开网站http://125.74.125.69:8091/, 2.输入用户名,密码 3.选择页面上右上角的菜单 4.点击人口库 5.选择人口信息, 6.根据图中提示 7.跟据图中提示完成下表 转载于:https://www.cnblogs.com/Happy-Eric-1/p/10396847.html...
网站名称写什么/网站流量统计分析的维度包括
问题:求含有n个点的连通图的个数。 解: 考虑DP,$f(n)$表示n个点,每个点都和点1相连,且n个点互相连通的图的个数。 (蓝字非常重要,这个条件有效地避免了重复计算) $g(n)$表示n个点&am…...