0

0

Java开发中常用jar包整理及使用

angryTom

angryTom

发布时间:2019-11-29 13:16:17

|

2758人浏览过

|

来源于博客园

转载

本文整理了我自己在java开发中常用的jar包以及常用的api记录。

Java开发中常用jar包整理及使用

一、common-lang3

简介:一个现在最为常用的jar包,封装了许多常用的工具包

(推荐视频:java视频教程)  

依赖:

立即学习Java免费学习笔记(深入)”;

小微助手
小微助手

微信推出的一款专注于提升桌面效率的助手型AI工具

下载
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.4</version>
</dependency>

主要常见的类如下:

数组工具类 ArrayUtils日期工具类 DateUtils DateFormatUtils字符串工具类 StringUtils数字工具类 NumberUtils布尔工具类 BooleanUtils反射相关工具类 FieldUtils、MethodUtils、MemberUtils、TypeUtils、ConstructorUtils对象工具类 ObjectUtils序列化工具类 SerializationUtils

API介绍

这里我只介绍经常使用的几个工具类及方法,ArrayUtils,StringUtils,NumberUtils,DateUtils,其他的请查看官方API文档吧

1.ArrayUtils

方法名 说明
add
remove
clone 复制数组
addAll
removeAll 第二个参数传入需要删除的下标(可以指定多个下标)
toObject 把数值(int[],double[])转为包装类(Int[],Double[])
indexOf 在数组按顺序查找,找到第一个满足对应的数值的下标
lastIndexOf 在数组按顺序查找,找到最后一个满足对应的数值的下标
contains 数组是否包含某个值
isEmpty 判断数组是否为空
isNotEmpty 判断数组是否不为空
reverse 数组反转
subarray 指定区间截取数组,区间为半开区间,不包含末尾
toArray 接收一个多个对象,把这几个对象转为对应类型的数组
toMap 将一个二维数组转为Map

2.NumberUtils

方法名

说明
min 比较三个数,返回最小值 或比较指定的几个数,返回最小值
max 比较三个数,返回最大值 或比较指定的几个数,返回最大值
createInt 从传入的String中创建对应类型的数值,createDouble,createFloat...
toInt 将指定字符串转为Int类型,可以选择指定默认数值,如果字符串为null则返回默认数值,除此之外,还有toDouble,toLong...等转为不同类型的方法
compare 比较两个同类型数值的大小
isDigits 判断字符串是否只包含数字
isParsable 判断字符串是否可转换为Long,Int等类型
isNumber 判断字符串是否为数值(0x,0X开头等进制数值)

3.DateUtils

方法名 说明
parseDate 将Date对象转为字符串
isSameDay 判断两个Dated对象是否为同一天
isSameDay 判断两个Dated对象是否为同一天
addHour 将指定的Date对象加上指定小时,除此之外,还有addMonth,addDay..等

DateFormatUtils正如其名,是用来把时间转为字符串,这里就不再多说

4.StringUtils

方法名 说明
join 将指定的数组连接成字符串,并添加指定的分割字符
containOnly 字符串是否只包含某个字符串
substringBefore 截取指定字符串前面的内容
substringAfter 截取指定字符串后面的内容(不包括指定字符串)
substringBetween 截取字符串某区间内容,如substringBetween("abcde","a","e")="bcd"
difference 比较两个字符串,返回两个字符串不同的内容,具体可以看API文档给出的示例
isBlank 判断字符串是否为空白,null,""," "这三个结果都是为true
isEmpty 判断字符串是否为空(只要不为null,或传入的String对象的长度不为0即为true)
countMatches 判断指定的字符串在某个字符串中出现的次数
deleteWhitespace 删除字符串中的空格
defaultIfBlank 如果字符串为空白,则返回一个指定的默认值(null或某个String)
defaultIfEmpty 如果字符串为空,则返回一个指定的默认值(null或某个String)
capitalize 将指定字符串首字母大写
abbreviate 将指定字符串的后面三位转为...
swapCase 将字符串中的字母大小写反转,如aBc变为AbC
lowerCase 将字符串的字母全部转为小写
upperCase 将字符串的字母全部转为大写
left 取字符串左边几个字符,如left("hello",3)="hel",right与此相反
leftPad 字符串的长度不够,则使用指定字符填充指定字符串,如leftPad("hel",5,"z")="zzhel",rightPad方法与此相反
prependIfMissing 指定字符串不以某段字符串开头,则自动添加开头,如prependIfMissing("hello","li")="lihello"
prependIfMissing 指定字符串不以某段字符串开头(忽略大小写),则自动添加开头
getCommonPrefix 获得多个字符串相同的开头内容,接收参数为多个字符串
removeEnd 删除字符串中结尾(满足是以某段内容结尾),如removeEnd("hello","llo")="he"
removeEndIgnoreCase 与上面一样,忽略大小写
removeStart 与上面的相反
remove 删除字符串中的指定内容,如remove("hello","l")="heo"
removeIgnoreCase 删除字符串中的指定内容,如remove("hello","l")="heo"
strip 清除字符串开头和末尾指定的字符(第二个参数为null,用来清除字符串开头和末尾的空格),如strip(" abcxy","xy")=" abc",strip(" abcxy","yx")=" abc"
stripStart 清除字符串开头指定字符
stripEnd 清除字符串末尾指定的字符

二、common-io

简介:常用的IO流工具包

<!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version></dependency>

我们主要关心的就是Utils后缀的那几个类即可,可以看到,common-io库提供了FileUtils,FileSystemUtils,FileNameUtils,FileFilterUtils,IOUtils

FileUtils

● 写出文件

● 读取文件

● 创建一个有父级文件夹的文件夹

● 复制文件和文件夹

● 删除文件和文件夹

● URL转文件

● 通过过滤器和扩展名来筛选文件和文件夹

● 比较文件内容

● 文件最后修改时间

● 文件校验

FileSystemUtils

关于文件系统的相关操作,如查看C盘的大小,剩余大小等操作

IOUtils

字面意思,是封装了IO流的各种操作的工具类

三、Log4j

简介:Log4J 是 Apache 的一个开源项目,通过在项目中使用 Log4J,我们可以控制日志信息输出到控制台、文件、GUI 组件、甚至是数据库中。

我们可以控制每一条日志的输出格式,通过定义日志的输出级别,可以更灵活的控制日志的输出过程,方便项目的调试。

依赖:

立即学习Java免费学习笔记(深入)”;

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

结构

Log4J 主要由 Loggers (日志记录器)、Appenders(输出端)和 Layout(日志格式化器)组成。

其中Loggers 控制日志的输出级别与日志是否输出;

Appenders 指定日志的输出方式(输出到控制台、文件等);

Layout 控制日志信息的输出格式。

日志级别:

级别 说明
OFF 最高日志级别,关闭左右日志
FATAL 将会导致应用程序退出的错误
ERROR 发生错误事件,但仍不影响系统的继续运行
WARN 警告,即潜在的错误情形
INFO 一般和在粗粒度级别上,强调应用程序的运行全程
DEBUG 一般用于细粒度级别上,对调试应用程序非常有帮助
ALL 最低等级,打开所有日志记录

我们主要使用这四个:Error>Warn>Info>Debug

使用

我们可以使用两种方式来运行Log4j,一种是java代码方式,另外一种则是配置文件方式

例子(Java方式)

public class Log4JTest {
    public static void main(String[] args) {   
        //获取Logger对象的实例(传入当前类)         
        Logger logger = Logger.getLogger(Log4JTest.class);
        //使用默认的配置信息,不需要写log4j.properties
        BasicConfigurator.configure();
        //设置日志输出级别为WARN,这将覆盖配置文件中设置的级别,只有日志级别低于WARN的日志才输出
        logger.setLevel(Level.WARN);
        logger.debug("这是debug");
        logger.info("这是info");
        logger.warn("这是warn");
        logger.error("这是error");
        logger.fatal("这是fatal");
    }
}

例子(配置文件方式)

上面的例子,我们想要实现打印Log,但是每次都要写一遍,浪费时间和精力,所以,Log4j提供了另外一种方式来配置好我们的信息

创建一个名为log4j.properties的文件,此文件需要放在项目的根目录(约定),如果是maven项目,直接放在resources文件夹中即可

log4j.properties

#控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
#log jdbc
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=WARN
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
#log mybatis设置
#log4j.logger.org.apache.ibatis=DEBUG
log4j.logger.org.apache.ibatis.jdbc=error
log4j.logger.org.apache.ibatis.io=info
log4j.logger.org.apache.ibatis.datasource=info
#springMVC日志
log4j.logger.org.springframework.web=WARN
# 文件输出配置
log4j.appender.A = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A.File = D:/log.txt #指定日志的输出路径
log4j.appender.A.Append = true
log4j.appender.A.Threshold = DEBUG
log4j.appender.A.layout = org.apache.log4j.PatternLayout #使用自定义日志格式化器
log4j.appender.A.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n #指定日志的输出格式
log4j.appender.A.encoding=UTF-8 #指定日志的文件编码
#指定日志的输出级别与输出端
log4j.rootLogger=DEBUG,Console,A
#指定某个包名日志级别(不能超过上面定义的级别,否则日志不会输出)
log4j.logger.com.wan=DEBUG

之后使用的话就比较简单了

//Logger的初始化(这个推荐定义为全局变量,方便使用)
Logger logger = Logger.getLogger(Log4JTest.class);
//输出Log
logger.info("这是info");

四、lombok

简介:平常我们创建实体类的时候,需要get/set方法,极其麻烦,虽然IDEA等IDE都是有提供了快捷生成,不过,最好的解决方法还是省略不写

而lombok就是这样的一个框架,实现省略get/set方法,当然,lombok的功能不只有此,还有equal,toString方法也可以由此框架自动生成

lombok的原理是使用注解,之后就会在编译过程中,给Class文件自动加上get/set等方法

不过IDEA似乎无法识别,代码检查还是会报错,所以,使用IDEA的时候还得安装一个插件,在plugin搜索lombok,之后安装重启即可,如图

1.jpg

之后为Java项目添加依赖

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.8</version>
    <scope>provided</scope>
</dependency>

使用示例

1.实体类省略get/set

估计Kotlin中的data关键字就是参照着lombok实现的

//这里我们只需要为类添加Data注解,就会自动生成对应属性的get/set方法,toString,equal等方法
@Data
public class User {
    private String username;
    private String password;
}

2.需要无参构造以及get/set方法

@Getter
@Setter
@NoArgsConstructor
public class User {
    private String username;
    private String password;
}

3.链式调用set方法

@Data
@Accessors(chain = true)
public class User {
    private String username;
    private String password;
}
//使用
User user = new User();
user.setUsername("helo").setPassword("123");

4.参数不为空

//如果调用此方法,就会抱一个空指针错误
public String print(@NotNull String str){
    ...
}

5.只需要toString

@ToString(callSuper=true, includeFieldNames=true)
public class User {
    private String username;
    private String password;
    //省略的get/set方法
}

6.builder模式创建实体类对象

@Data
@Builder
public class User {
    private String username;
    private String password;
}
//使用
User user1 = User.builder().username("user1").password("123").build();

7.工具类

@UtilityClass
public class MyUtils{
    //会将此方法自动转为静态方法
    public void print(String str){
        ...
    }
}
//使用
MyUtils.print("hello");

8.自动关闭流

public static void main(String[] args) throws Exception {
    //使用Cleanup会自动调用close方法
    @Cleanup InputStream in = new FileInputStream(args[0]);
    @Cleanup OutputStream out = new FileOutputStream(args[1]);
    byte[] b = new byte[1024];
    while (true) {
        int r = in.read(b);
        if (r == -1) break;
        out.write(b, 0, r);
    }
}

9.省略Logger时的初始化

@Log4j
@Log
public class User{
    //会自动添加此语句
    //Logger logger = Logger.getLogger(User.class);
    ...
}

本文来自php中文网,java教程栏目,欢迎学习!  

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

89

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

276

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

59

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

99

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

105

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

230

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

619

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

173

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
微信小程序开发之API篇
微信小程序开发之API篇

共15课时 | 1.3万人学习

Laravel5.4电商实战视频教程
Laravel5.4电商实战视频教程

共24课时 | 7.4万人学习

前端开发经验分享
前端开发经验分享

共4课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号