首页 > 基础资料 博客日记
好用的Java工具类库—— Hutool
2024-11-02 04:00:07基础资料围观179次
本篇文章分享好用的Java工具类库—— Hutool,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识
一.安装使用
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)封装实现
三.常用工具类
常用方法汇总
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","身份证号码异常,请核查信息");
文章来源:https://blog.csdn.net/m0_56663158/article/details/140096092
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: