Java常用API---快速达到Java工作水准系列(1)
目录
1.集合
2.包装类
3.日期处理以及格式化
4.字符串处理类
5.数组
5.BigDecimal
6.Math
1.集合
毋庸置疑,集合在实际项目的使用概率几乎是百分之百。无论是用于数据存储和管理、去重和查找亦或是数据检索和遍历,都离不开集合的使用。任何一个项目,都绕不开它。
你需要掌握的有:
包括List(ArrayList、LinkedList)、Map(HashMap、TreeMap)、Set(HashSet、TreeSet)
2.包装类
包装类(Wrapper classes)在Java中用于将基本数据类型转换为对象。这些类提供了一些方法和功能,使得基本数据类型能够像对象一样操作,也是Java集合框架中存储基本数据类型的必要组成部分。以下是包装类在实际工作中的几个常见用途:
-
在集合中存储基本数据类型:集合框架只能存储对象,而不能直接存储基本数据类型。包装类使得基本数据类型可以被存储在集合类(如
List
、Set
、Map
)中。 -
作为方法参数或返回值:有时候需要将基本数据类型传递给方法,但方法的参数类型只能是对象。这时可以使用包装类作为方法参数或返回值,从而将基本数据类型包装成对象。
-
处理与字符串之间的转换:包装类提供了与字符串之间的转换方法,可以方便地将字符串与基本数据类型之间进行转换。
-
处理数字和文本的格式化:包装类提供了格式化数字和文本的方法,可以将数字格式化为特定的字符串表示形式,或将字符串解析为数字。
-
实现泛型:在泛型中,只能使用对象类型,不能使用基本数据类型。包装类允许你在泛型中使用基本数据类型的封装对象。
-
比较数据:包装类提供了比较、判断相等等方法,可以对基本数据类型进行比较操作。
-
处理特定需求:有时候需要在对象中存储一些额外的信息,比如
Integer
类可以通过.intValue()
方法将其转换为整数。
以下是一些常见的包装类及其对应的基本数据类型:
Integer
对应int
Long
对应long
Float
对应float
Double
对应double
Boolean
对应boolean
Character
对应char
总的来说,包装类在实际工作中主要用于解决基本数据类型不能直接作为对象操作的问题,以及在集合、泛型和格式化等方面提供了更多的灵活性和功能。
3.日期处理以及格式化
日期处理和格式化在实际工作中非常常见,特别是在涉及时间、计划、日程等方面。在Java中,可以使用 java.util.Date
、java.time.LocalDate
、java.time.LocalDateTime
等类来处理日期和时间,同时可以使用 java.text.SimpleDateFormat
类来进行日期格式化和解析
最典型的是当在实体类中定义类似以Date类型的createTime或expireTime这样的属性时,我们往往会要求其以标准化的、字符串格式的时间进行输出,虽然如今已有相应的注解可以便捷我们的操作,但我们还是要会理解它的原理:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date createTime;
4.字符串处理类
字符串处理类在实际工作中非常常见,因为字符串是编程中最常用的数据类型之一。Java提供了丰富的字符串处理类和方法,使得处理、操作和转换字符串变得更加便捷。以下是字符串处理类在实际工作中的一些常见用途:
-
文本操作和转换:使用字符串处理类可以进行文本的拼接、截取、替换、分割等操作。这对于处理用户输入、从文件中读取内容、处理文本数据等非常有用。
-
字符串格式化:格式化字符串以便于输出或显示。使用
String.format()
方法或者printf
格式化字符串可以根据需要插入变量、数字、日期等内容。 -
字符串比较和搜索:字符串处理类提供了比较字符串、查找子字符串、判断是否包含某个字符或子字符串等方法。这对于检查特定模式或内容的存在非常有用。
-
大小写转换:可以使用字符串处理类来将字符串转换为大写或小写形式,这对于搜索不区分大小写的内容或者统一输出格式很有帮助。
-
正则表达式匹配:使用正则表达式可以进行更复杂的字符串匹配和处理,例如搜索、替换、验证等操作。
-
字符串拼接性能优化:在大量字符串拼接时,使用
StringBuilder
或StringBuffer
可以提高性能,避免频繁创建字符串对象。 -
解析和生成 JSON、XML:在处理 JSON 或 XML 数据时,字符串处理类可以帮助你解析和生成这些格式的数据。
-
处理密码和敏感信息:在处理密码和敏感信息时,使用
String
类的不可变性质可以增加安全性,防止被篡改。 -
多语言支持:在多语言应用中,使用字符串处理类可以轻松地切换和管理不同语言的字符串资源。
总的来说,字符串处理类在各种应用中都发挥着重要作用,从基本的文本操作到复杂的模式匹配和格式化,都需要用到字符串处理类的功能。Java提供了丰富的字符串处理方法,根据具体需求选择合适的方法和类可以提高代码的可读性和效率。
5.数组
-
请求和响应数据处理:在Spring Boot的Web开发中,数组经常用于处理请求的参数和响应的数据。例如,当从前端传递多个参数时,这些参数通常被组织成数组,然后在后端进行解析和处理。
-
数据存储和操作:Spring Boot应用程序通常需要与数据库或其他数据源进行交互。在处理数据时,数组可以用来存储和操作一组数据,例如从数据库中检索一组记录。
-
集合类的操作:在Spring Boot中,使用数组可以对集合类(如列表、集合、映射等)进行操作,如转换、过滤、排序等。
-
配置属性管理:Spring Boot中的配置属性通常被组织成数组,例如处理多个配置值。你可以使用
@ConfigurationProperties
注解将数组配置属性映射到Java类中。 -
数据校验和转换:在处理用户输入或外部数据时,数组可用于存储和处理多个值,例如表单中的多选框值。
-
RESTful API的参数传递:在Spring Boot中,RESTful API可以使用数组来传递多个参数,例如查询参数、路径参数等。
-
数据分析和处理:如果你的Spring Boot应用涉及数据分析、报告生成或其他数据处理任务,数组可以用来存储和操作数据集。
-
日志处理:数组可用于存储和处理多个日志条目,例如存储异常堆栈跟踪信息。
-
前端交互:在与前端交互时,数组用于传递多个数据项,例如通过JSON格式传递给前端,或从前端接收多个选项值。
总之,Spring Boot应用程序中的数组在各个方面都有应用。它们用于数据存储、传递、操作和处理,有助于简化代码、提高效率,并为各种任务提供了一种高效的数据结构。在开发Spring Boot项目时,根据具体的场景和需求,合理地使用和处理数组是非常重要的
5.BigDecimal
BigDecimal
类通常用于处理需要高精度计算和避免浮点数精度问题的场景
货币计算:在金融领域,精确的货币计算是至关重要的。使用 BigDecimal
可以避免浮点数运算带来的精度问题。比如,在购物车结算中,计算总金额、优惠折扣等都可以使用 BigDecimal
。
税务计算:在涉及税务计算时,需要确保计算的精确性,以避免舍入错误。使用 BigDecimal
可以确保准确地计算税金。
订单金额计算:在处理订单金额时,通常需要进行多次计算,如商品价格、运费、税金等。使用 BigDecimal
可以保证精确的计算结果。
精确比较:使用 BigDecimal
可以进行精确的数字比较,避免浮点数比较带来的不准确性。
6.Math
java.lang.Math
类提供了许多数学计算相关的静态方法,用于处理各种数学运算。虽然 Math
类的方法主要涉及基本数学运算,但在实际工作中仍然有许多用途。以下是在Spring Boot项目中使用 Math
类的几个常见场景:
随机数生成:在游戏开发、随机数据生成和密码学等领域,需要生成随机数。Math.random()
方法可以生成介于0和1之间的随机浮点数。
取整和舍入:Math
类提供了取整和舍入的方法,例如 Math.round()
可以将一个浮点数四舍五入为最接近的整数。
数学运算:Math
类提供了基本的数学运算,如绝对值、幂运算、开方、对数、三角函数等。
最大值和最小值:可以使用 Math
类找到一组数字中的最大值和最小值。
总的来说,虽然 Math
类的方法是静态的且基本,但它在实际工作中仍然有许多应用。在Spring Boot项目中,你可能会在各种场景中用到 Math
类,从随机数生成到数学运算、舍入等。
相关文章:
Java常用API---快速达到Java工作水准系列(1)
目录 1.集合 2.包装类 3.日期处理以及格式化 4.字符串处理类 5.数组 5.BigDecimal 6.Math 1.集合 毋庸置疑,集合在实际项目的使用概率几乎是百分之百。无论是用于数据存储和管理、去重和查找亦或是数据检索和遍历,都离不开集合的使用。任何一个项…...

Python中使用隧道爬虫ip提升数据爬取效率
作为专业爬虫程序员,我们经常面临需要爬取大量数据的任务。然而,有些网站可能会对频繁的请求进行限制,这就需要我们使用隧道爬虫ip来绕过这些限制,提高数据爬取效率。本文将分享如何在Python中使用隧道爬虫ip实现API请求与响应的技…...

深入源码分析kubernetes informer机制(四)DeltaFIFO
[阅读指南] 这是该系列第四篇 基于kubernetes 1.27 stage版本 为了方便阅读,后续所有代码均省略了错误处理及与关注逻辑无关的部分。 文章目录 client-go中的存储结构DeltaFIFOdelta索引 keyqueue push操作delta push 去重 queue pop操作 总结 client-go中的存储结构…...

UI设计师个人工作总结范文
UI设计师个人工作总结范文篇一 感受到了领导们“海纳百川”的胸襟,感受到了作为广告人“不经历风雨,怎能见彩虹”的豪气,也体会到了重庆广告从业人员作为拓荒者的艰难和坚定(就目前国内广告业而言,我认为重庆广告业尚在发展阶段并…...
explicit关键字 和 static成员
explicit关键字 和 static成员 1、explicit 关键字2、static成员(静态成员变量属于类的(只有所属这个类的对象才能修改),不同于全局变量(任何对象都能修改))2.1 定义和性质2.2 静态成员的使用场…...

安装Linux操作系统CentOS 6详细图文步骤
为满足业务对Linux操作系统部署的要求,本文档主要提供CentOS 6操作系统的最小化安装和基本配置, 安装本系统建议最少1GB内存和2GB磁盘空间。 1、 使用光盘或者挂载ISO镜像,在出现如下图形界面时选择【Install or upgrade an existing system】并按Ent…...

新增守护进程管理、支持添加MySQL远程数据库,支持PHP版本切换,1Panel开源面板v1.5.0发布
2023年8月14日,现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.5.0版本。 在这个版本中,1Panel新增了守护进程管理功能;支持添加MySQL远程数据库;支持添加FTP/S和WebDAV的SFTP服务;支持PHP版本切换。此外&am…...

十、接口(1)
本章概要 抽象类和方法接口创建 默认方法多继承接口中的静态方法Instrument 作为接口 接口和抽象类提供了一种将接口与实现分离的更加结构化的方法。 这种机制在编程语言中不常见,例如 C 只对这种概念有间接的支持。而在 Java 中存在这些关键字,说明…...
percentile_approx 聚合函数
返回组内 expr 的百分位近似值。 此函数是 approx_percentile 聚合函数的同义词。 语法 percentile_approx ( [ALL | DISTINCT ] expr, percentile [, accuracy] ) [FILTER ( WHERE cond ) ] 还可以使用 OVER 子句将此函数作为窗口函数调用。 参数 expr:数值表达…...

面试热题(全排列)
给定一个不含重复数字的整数数组 nums ,返回其 所有可能的全排列 。可以 按任意顺序 返回答案。 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 先在这里说明一下排列和组合的区别? 组合:是指从一…...

一文走进时序数据库性能测试工具 TSBS
一、背景 在物联网、车联网等时序数据场景中,数据的高速写入能力至关重要,会对产品方案的可用性、可靠性和扩展性产生影响。 以物联网为例,当面临千万甚至上亿设备、平均每个设备采集几十个到几百个指标时,每秒生成的数据将达到…...
通俗讲解-动量梯度下降法原理与代码实例
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com 目录 一.动量梯度下降法介绍 1.1 动量梯度下降法简介与思想 1.2 动量梯度下降法的算法流程 二.动量梯度下降法代码实例 2.1 动量梯度下降法实例代码 一.动量梯度下降法介绍…...

【【STM32-USART串口协议】】
STM32-USART串口协议 USART串口协议 •通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 •通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 就是我们并不能在芯片上设计完全部的一下子完成所有的设计&…...
vue3.0组件通信
1、props 没有加TS限制类型的时候 1. 数组写法 defineProps([count, changCount]) 2. 对象写法 defineProps({count: Number,changCount: Function }) 3. 配置对象 defineProps({count: {type: Number,default: 2},changCount: {type: Function,required: true} })注意: defi…...
费曼学习法
费曼学习法 费曼学习法(Feynman Technique)是一种学习和理解复杂概念的方法,以理查德费曼(Richard Feynman)这位著名的理论物理学家命名。该方法的核心思想是通过将学习内容简化并用自己的话解释给别人,来…...
Kubernetes介绍和部署,使用
1.k8s kubernetes来自希腊语舵手,google, 8是ubernete 1.管理docker容器 go写的(并发) 2.用于微服务 3.cncf云原生基金会 2.mater(管理节点)和nodes(微服务节点) 3.部署 1.minikube kind官网在线测试语句 2.kubeadm(官方)(安装比较方便 添加) 3.github下载二进制包 4.yum(老) …...

视频汇聚平台EasyCVR视频监控播放平台WebRTC流地址无法播放的问题解决方案
开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多…...
node.js 基础高并发案例
什么是高并发 高并发是指系统在同一时间段内需要处理大量的并发请求或同时进行大量的操作。在计算机领域中,高并发通常指的是在短时间内有大量的用户或客户端同时访问系统或进行操作,对系统的并发处理能力提出了较高的要求。 高并发的特点包括 大量的…...

OpenCV实例(八)车牌字符识别技术(二)字符识别
车牌字符识别技术(二)字符识别 1.字符识别原理及其发展阶段2.字符识别方法3.英文、数字识别4.车牌定位实例 1.字符识别原理及其发展阶段 匹配判别是字符识别的基本思想,与其他模式识别的应用非常类似。字符识别的基本原理就是对字符图像进行…...
svn文章五:问题排查与修复 - 出了问题怎么办?SVN故障排除与修复指南
文章五:问题排查与修复 - “出了问题怎么办?SVN故障排除与修复指南” 概述:在使用SVN时,难免会遇到一些问题和错误。在这篇文章中,我们将教您如何进行故障排查和修复,保护您的SVN仓库和数据安全。 1. 引言…...
量子计算突破:新型超导芯片重构计算范式
2024年IBM 1281量子比特超导芯片实现0.001%量子错误率,计算速度达经典超算2.5亿倍。本文解析: 物理突破:钽基超导材料使量子相干时间突破800μs(提升15倍)架构革命:十字形…...

⚡️ Linux Docker 基本命令参数详解
🐳 Linux Docker 基本命令参数详解 📘 1. Docker 简介 Docker 是一个开源的容器化平台,它通过将应用及其依赖打包到一个轻量级、可移植的容器中,从而实现跨平台运行。Docker 采用 C/S 架构,服务端称为 Docker Daemon&a…...

【Java学习笔记】StringBuilder类(重点)
StringBuilder(重点) 1. 基本介绍 是一个可变的字符串序列。该类提供一个与 StringBuffer 兼容的 API,但不保证同步(StringBuilder 不是线程安全的) 该类被设计用作 StringBuffer 的一个简易替换,用在字符…...
AI大神吴恩达-提示词课程笔记
如何有效编写提示词 在学习如何与语言模型(如ChatGPT)交互时,编写清晰且高效的提示词(Prompt)是至关重要的。本课程由ESA提供,重点介绍了提示词工程(Prompt Engineering)的两个核心…...

机器学习:聚类算法及实战案例
本文目录: 一、聚类算法介绍二、分类(一)根据聚类颗粒度分类(二)根据实现方法分类 三、聚类流程四、K值的确定—肘部法(一)SSE-误差平方和(二)肘部法确定 K 值 五、代码重…...
n8n 自动化平台 Docker 部署教程(附 PostgreSQL 与更新指南)
n8n 自动化平台 Docker 部署教程(附 PostgreSQL 与更新指南) n8n 是一个强大的可视化工作流自动化工具,支持无代码或低代码地集成各种服务。本文将手把手教你如何通过 Docker 快速部署 n8n,并介绍如何使用 PostgreSQL、设置时区以…...

金融系统渗透测试
金融系统渗透测试是保障金融机构网络安全的核心环节,它的核心目标是通过模拟攻击手段主动发现系统漏洞,防范数据泄露、资金盗取等重大风险。 一、金融系统渗透测试的核心框架 合规性驱动 需严格遵循《网络安全法》《数据安全法》及金融行业监管要求&am…...

Xilinx FPGA 重构Multiboot ICAPE2和ICAPE3使用
一、FPGA Multiboot 本文主要介绍基于IPROG命令的FPGA多版本重构,用ICAP原语实现在线多版本切换。需要了解MultiBoot Fallback点击链接。 如下图所示,ICAP原语可实现flash中n1各版本的动态切换,在工作过程中,可以通过IPROG命令切…...
Android学习总结-GetX库常见问题和解决方案
GetX库的常见问题 路由管理:Get.to() 后页面不跳转或卡顿? 问题: 明明调用了 Get.to(NextPage()),但页面没反应,或者感觉有延迟卡顿。这可能发生在较复杂的页面树或低端设备上。原因: …...

【基础算法】枚举(普通枚举、二进制枚举)
文章目录 一、普通枚举1. 铺地毯(1) 解题思路(2) 代码实现 2. 回文日期(1) 解题思路思路一:暴力枚举思路二:枚举年份思路三:枚举月日 (2) 代码实现 3. 扫雷(2) 解题思路(2) 代码实现 二、二进制枚举1. 子集(1) 解题思路(2) 代码实现 2. 费解的…...