好用的Java工具类库—— Hutool 好用的Java工具类库—— Hutool

一.安装使用

Maven环境 导入hutool包即可


 cn.hutool
 hutool-all
 5.8.16

二.Hutool核心模块介绍

hutool-aop	JDK动态代理封装,提供非IOC下的切面支持
hutool-bloomFilter	布隆过滤,提供一些Hash算法的布隆过滤
hutool-cache	简单缓存实现
hutool-core	核心,包括Bean操作、日期、各种Util等
hutool-cron	定时任务模块,提供类Crontab表达式的定时任务
hutool-crypto	加密解密模块,提供对称、非对称和摘要算法封装
hutool-db	JDBC封装后的数据操作,基于ActiveRecord思想
hutool-dfa	基于DFA模型的多关键字查找
hutool-extra	扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等)
hutool-http	基于HttpUrlConnection的Http客户端封装
hutool-log	自动识别日志实现的日志门面
hutool-script	脚本执行封装,例如Javascript
hutool-setting	功能更强大的Setting配置文件和Properties封装
hutool-system	系统参数调用封装(JVM信息等)
hutool-json	JSON实现
hutool-captcha	图片验证码实现
hutool-poi	针对POI中Excel和Word的封装
hutool-socket	基于Java的NIO和AIO的Socket封装
hutool-jwt	JSON Web Token (JWT)封装实现

三.常用工具类

Java - HuTool工具包的介绍与使用

常用方法汇总

1.DateUtil

日期时间工具类,定义了一些常用的日期时间操作方法。

1.当前时间 ,转换为DateTime对象
	DateTime date = DateUtil.date(); 	//2024-07-01 11:29:13
2.Date类型时间转为DateTime
	DateTime date = DateUtil.date(new Date());	//2024-07-01 11:29:13
3.当前时间的时间戳
	long current = DateUtil.current(); 	//1719805116266
4.当前时间 string类型 格式 yyyy-MM-dd HH:mm:ss
	String now = DateUtil.now(); 	//2024-07-01 11:41:14
5.当前时间 string类型 格式 yyyy-MM-dd
	String now = DateUtil.today(); 	// 2024-07-01
6.获得年的部分
 int year = DateUtil.year(new Date());	 	//2024 
7.获得指定日期所属季度,从1开始计数
	int year = DateUtil.quarter(new Date()); 	//3 
8.是否为周末(周六或周日)	
 boolean isWeekend = DateUtil.isWeekend(new Date()); 	//false
9.计算日期时间之间的偏移量
 DateTime parse = DateUtil.parse("2024-07-01 14:00:00");
 DateTime parse1 = DateUtil.parse("2024-07-01 16:00:00");
 long betweenDay = DateUtil.between(parse, parse1, DateUnit.MINUTE); //120
 long betweenDay = DateUtil.between(parse, parse1, DateUnit.HOUR);	 //2
10.计算日期时间之间的偏移量 
	string转date
 Date date = DateUtil.parse("2023-06-29 12:34:56");
11. 某天的开始和结束
Date beginOfDay = DateUtil.beginOfDay(date); // 2023-06-29 00:00:00
Date endOfDay = DateUtil.endOfDay(date); // 2023-06-29 23:59:59
12. 某周的开始和结束
Date beginOfWeekDefault = DateUtil.beginOfWeek(date); // 2023-06-26 00:00:00, 周一定为一周的开始
Date beginOfWeekSunday = DateUtil.beginOfWeek(date, false); // 2023-06-25 00:00:00, 周日为一周的开始
Date endOfWeekDefault = DateUtil.endOfWeek(date); // 2023-07-02 23:59:59, 周日为一周的结束
Date endOfWeekSaturday = DateUtil.endOfWeek(date, false); // 2023-07-01 23:59:59, 周六为一周的结束
13. 某月的开始和结束
Date beginOfMonth = DateUtil.beginOfMonth(date); // 2023-06-01 00:00:00
Date endOfMonth = DateUtil.endOfMonth(date); // 2023-06-30 23:59:59
14. 某季度的开始和结束
Date beginOfQuarter = DateUtil.beginOfQuarter(date); // 2023-04-01 00:00:00
Date endOfQuarter = DateUtil.endOfQuarter(date); // 2023-06-30 23:59:59
15. 某年的开始和结束
Date beginOfYear = DateUtil.beginOfYear(date); // 2023-01-01 00:00:00
Date endOfYear = DateUtil.endOfYear(date); // 2023-12-31 23:59:59

2.StrUtil

字符串工具类,定义了一些常用的字符串操作方法。

1.调用对象的toString方法,null会返回“null”
 String string = StrUtil.toString(str); 	
2.调用对象的toString方法,null会返回 null
 String string = StrUtil.toStringOrNull(str);	
3.反转字符串
 String str="abcdefg";
 String string = StrUtil.reverse(str); 	//gfedcba
4.生成随机UUID
 String string = StrUtil.uuid();	//43fa8117-7251-41d2-b242-2743b5eb6e0b

3.NumberUtil

数字处理工具类,可用于各种类型数字的加减乘除操作及判断类型。
极度推荐使用此方法处理数字相关运算!!!

1.对float、double、BigDecimal做加减乘除操作
	result = NumberUtil.add(n1, n2);	//加
	result = NumberUtil.sub(n1, n2);	//减
	result = NumberUtil.mul(n1, n2);	//乘
	result = NumberUtil.div(n1, n2);	//除
2.格式化金额输出,每三位用逗号分隔
 Double aDouble = new Double("12345678");
 	String money = NumberUtil.decimalFormatMoney(aDouble);	//12,345,678.00
3.数字转BigDecimal null或""或空白符转换为0
 BigDecimal bigDecimal = NumberUtil.toBigDecimal("");	 //0

4.MapUtil

Map操作工具类,可用于创建Map对象及判断Map是否为空。

1.去除Map中值为null的键值对 注意:此方法在传入的Map上直接修改。
 HashMap data = new HashMap();
 data.put("","2222");
 data.put("WWW","2222");
 data.put("EEE", null);
 Map data1 = MapUtil.removeNullValue(data);	//{=2222, WWW=2222}

5.DesensitizedUtil

脱敏工具类

1.【中文姓名】只显示第一个汉字,其他隐藏为2个星号,比如:李**
 String name = DesensitizedUtil.chineseName("张三岁"); 	 //张**
2.【身份证号】前1位 和后2位
 String idCord= DesensitizedUtil.idCardNum("610204199312115638",3,1);	 //610**************7
3.【手机号码】前三位,后4位,其他隐藏,比如135****2210
 String name = DesensitizedUtil.mobilePhone("15929998622");	//159****8622
4.【地址】只显示到地区,不显示详细地址,比如:北京市海淀区****
 String name = DesensitizedUtil.address("陕西省西安市长安区西沣三路万科高新",6);	//陕西省西安市长安区西沣******
5.【电子邮箱】邮箱前缀仅显示第一个字母,前缀其他隐藏,用星号代替,@及后面的地址显示,比如:d**@126.com
 String name = DesensitizedUtil.email("liuyu8820@163.com"); 	//l********@163.com
6.【密码】密码的全部字符都用*代替,比如:******
	String name = DesensitizedUtil.password("1234412413241");	//*************
7.【中国车牌】车牌中间用*代替 eg1:null -》 "" eg1:"" -》 "" eg3:苏D40000 -》 苏D4***0 eg4:陕A12345D -》 陕A1****D eg5:京A123 -》 京A123 如果是错误的车牌,不处理 
 String name = DesensitizedUtil.carLicense("陕BMJ825");
8.【银行卡号脱敏】由于银行卡号长度不定,所以只展示前4位,后面的位数根据卡号决定展示1-4位 例如
 String name = DesensitizedUtil.bankCard("1234 2222 3333 4444 6789");

6.Convert

import cn.hutool.core.convert.Convert;
类型转换工具类,用于各种类型数据的转换

1. 转换为字符串 如果给定的值为null 或者转换失败,返回默认值 转换失败不会报错 
	String str = Convert.toStr(null,"默认值"); 	//默认值
2.转换为Number 如果给定的值为空,或者转换失败,返回默认值 转换失败不会报错
 Number number = Convert.toNumber(null, 0); 	//0
3.转换为int 如果给定的值为空,或者转换失败,返回默认值 转换失败不会报错
 Integer anInt = Convert.toInt(null, 0);	//0
4.转换为BigDecimal 如果给定的值为空,或者转换失败,返回默认值 转换失败不会报错
 BigDecimal bigDecimal = Convert.toBigDecimal(null, BigDecimal.ZERO);

7.ObjectUtil

对象工具类,包括判空、克隆、序列化等操作

1.比较两个对象是否相等,此方法是 equal(Object, Object)的别名方法。 相同的条件有两个,满足其一即可: 
	obj1 == null & obj2 == null 
	obj1.equals(obj2) 
	如果是BigDecimal比较,0 == obj1.compareTo(obj2)
 	boolean equal = ObjUtil.equal(obj1,obj2);
2.检查对象是否不为null	
	1. != null
 	2. not equals(null)
 	boolean equal = ObjUtil.isNotNull(obj);
3.如果给定对象为null返回默认值
	Object defaultIfNull = ObjUtil.defaultIfNull(obj, "默认值");
4.将Object转为String 策略为:
 1、null转为"null"
 2、调用Convert. toStr(Object) 转换
	String string = ObjUtil.toString(obj);

8.Assert

断言 断言某些对象或值是否符合规定,否则抛出异常。经常用于做变量检查

1.isTrue
	断言是否为真,如果为 false 抛出 IllegalArgumentException 异常
	Assert.isTrue("1".equals("2"),"异常信息");
2.isFalse
	断言是否为假,如果为 true 抛出指定类型异常
	Assert.isFalse("1".equals("1"),"异常信息");
3.isNull
	断言对象是否为null ,如果不为null 抛出指定类型异常 并使用指定的函数获取错误信息返回
	Assert.isNull(1,"异常信息");
4.notNull
	断言对象是否不为null ,如果为null 抛出指定类型异常 并使用指定的函数获取错误信息返回
	Assert.notNull(null,"异常信息");
5.notEmpty
	检查给定字符串是否为空,为空抛出自定义异常,并使用指定的函数获取错误信息返回。
	Assert.notEmpty("","异常信息");
6.notBlank
	检查给定字符串是否为空白(null、空串或只包含空白符),为空抛出自定义异常。 并使用指定的函数获取错误信息返回
	Assert.notBlank("","异常信息");
7.equals
	断言两个对象是否相等,如果两个对象不相等 抛出IllegalArgumentException 异常
	Assert.equals("wwqw","ww");

9.Validator

字段验证器(验证器) 主要验证字段非空、是否为满足指定格式等(如是否为Email、电话等)

1.isNotEmpty
	验证是否为非空 对于String类型判定是否为empty(null 或 "")
	Validator.isNotEmpty(""); 	//false
2.validateNotEmpty
	验证是否为非空,为空时抛出异常 对于String类型判定是否为empty(null 或 "")
	String msg = Validator.validateNotEmpty("", "错误信息");	//错误信息
3.validateNotEmptyAndEqual
	验证是否非空且与指定值相等 当数据为空时抛出验证异常 当两值不等时抛出异常
	Validator.validateNotEmptyAndEqual("wwr", "ww","错误信息");	//错误信息
4.isEmail
	验证是否为可用邮箱地址
	boolean wer = Validator.isEmail("wer@163.com");	//	true
5.validateMobile
	验证是否为手机号码(中国)
	Validator.validateMobile("15929998801","手机号异常,请核查信息");
6.validateCitizenIdNumber
	验证是否为身份证号码(支持18位、15位和港澳台的10位)
	Validator.validateCitizenIdNumber("610204199709110987","身份证号码异常,请核查信息");
作者:java攻城狮1024原文地址:https://blog.csdn.net/m0_56663158/article/details/140096092

%s 个评论

要回复文章请先登录注册