好用的Java工具类库—— Hutool

一.安装使用

Maven环境 导入hutool包即可

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.16</version>
</dependency>

二.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<String, String> data = new HashMap<>();
   data.put("","2222");
   data.put("WWW","2222");
   data.put("EEE", null);
   Map<String, String> 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","身份证号码异常,请核查信息");
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java攻城狮1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值