文章目录
一、常用的工具类库有哪些?为啥我要推荐Hutool?二、Hutool简介三、 Hutool如何改变我们的coding方式四、包含组件五、使用示例六、Hutool结构概述一、常用的工具类库有哪些?为啥我要推荐Hutool?
Apache Commons
Google guava
对比有何优势:
有完善的中文文档,这个很关键,学习成本降低。更小的jar包,更优雅易懂的api最关键的,hutool结合了Apache Commons、Google guava的优点,也可以在源码中看到它们的身影。而且它不依赖第三方包。
二、Hutool简介
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;
Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。
三、 Hutool如何改变我们的coding方式
Hutool的目标是使用一个工具方法代替一段复杂代码,从而最大限度的避免“复制粘贴”代码的问题,彻底改变我们写代码的方式。
以计算MD5为例:
【以前】打开搜索引擎 -> 搜“Java MD5加密” -> 打开某篇博客-> 复制粘贴 -> 改改好用【现在】引入Hutool -> SecureUtil.md5()
Hutool的存在就是为了减少代码搜索成本,避免网络上参差不齐的代码出现导致的bug。
四、包含组件
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:
可以根据需求对每个模块单独引入,也可以通过引入hutool-all
方式引入所有模块。
五、使用示例
比如:日期时间工具-DateUtil
Date date = DateUtil.date();//获得年的部分DateUtil.year(date);//获得月份,从0开始计数DateUtil.month(date);//获得月份枚举DateUtil.monthEnum(date);//一天的开始,结果:-06-22 00:00:00Date beginOfDay = DateUtil.beginOfDay(date);//一天的结束,结果:-06-22 23:59:59Date endOfDay = DateUtil.endOfDay(date);//昨天DateUtil.yesterday();//明天DateUtil.tomorrow();//上周DateUtil.lastWeek();//下周DateUtil.nextWeek();//上个月DateUtil.lastMonth();//下个月DateUtil.nextMonth();
还能得到星座、属相、年龄、是否闰年,想不到吧?
// "双子"String zodiac = DateUtil.getZodiac(Month.JUNE.getValue(), 19);// "狗"String chineseZodiac = DateUtil.getChineseZodiac(1994);//年龄DateUtil.ageOfNow("1997-11-10");//是否闰年DateUtil.isLeapYear();
六、Hutool结构概述
还有好多好玩好用的!!等你来探索!
工具类
字符串工具-StrUtil16进制工具-HexUtilEscape工具-EscapeUtilHash算法-HashUtilURL工具-URLUtilXML工具-XmlUtil对象工具-ObjectUtil反射工具-ReflectUtil泛型类型工具-TypeUtil分页工具-PageUtil剪贴板工具-ClipboardUtil类工具-ClassUtil类加载工具-ClassLoaderUtil枚举工具-EnumUtil命令行工具-RuntimeUtil数字工具-NumberUtil数组工具-ArrayUtil随机工具-RandomUtil唯一ID工具-IdUtil压缩工具-ZipUtil引用工具-ReferenceUtil正则工具-ReUtil身份证工具-IdcardUtil信息脱敏工具-DesensitizedUtil社会信用代码工具-CreditCodeUtilSPI加载工具-ServiceLoaderUtil
日期时间
类型转换工具类-Convert自定义类型转换-ConverterRegistry日期时间工具-DateUtil日期时间对象-DateTime农历日期-ChineseDateLocalDateTime工具-LocalDateTimeUtil计时器工具-TimeInterval
IO流相关
IO工具类-IoUtil文件工具类-FileUtil文件类型判断-FileTypeUtil文件监听-WatchMonitor文件读取-FileReader文件写入-FileWriter文件追加-FileAppender文件跟随-Tailer文件名工具-FileNameUtil资源工具-ResourceUtilClassPath资源访问-ClassPathResource
语言特性
HashMap扩展-Dict单例工具-Singleton断言-Assert二进码十进数-BCD控制台打印封装-Console字段验证器-Validator字符串格式化-StrFormatter树结构工具-TreeUtil
JavaBean
Bean工具-BeanUtilDynaBean表达式解析-BeanPathBean描述-BeanDesc空检查属性获取-OptinalBean
集合类
集合工具-CollUtil列表工具-ListUtilIterator工具-IterUtil有界优先队列-BoundedPriorityQueue线程安全的HashSet-ConcurrentHashSet
Map
Map工具-MapUtil双向查找Map-BiMap可重复键值Map-TableMap
Codec编码
Base62编码解码-Base62Base64编码解码-Base64Base32编码解码-Base32
文本操作
CSV文件处理工具-CsvUtil可复用字符串生成器-StrBuilderUnicode编码转换工具-UnicodeUtil字符串切割-StrSpliter
注解
注解工具-AnnotationUtil
比较器
比较工具-CompareUtil版本比较器-VersionComparator
异常
异常工具-ExceptionUtil其它异常封装
数学
数学相关-MathUtil
线程和并发
线程工具-ThreadUtil自定义线程池-ExecutorBuilder高并发测试-ConcurrencyTester
图片
图片工具-ImgUtil图片编辑器-Img
网络
网络工具-NetUtilURL生成器-UrlBuilder
源码编译
源码编译工具-CompilerUtil.md
缓存(Hutool-cache)
缓存工具-CacheUtil先入先出-FIFOCache最少使用-LFUCache最近最久未使用-LRUCache超时-TimedCache弱引用-WeakCache文件缓存-FileCache
JSON(Hutool-json)
JSON工具-JSONUtilJSON对象-JSONObjectJSON数组-JSONArray
加密解密(Hutool-crypto)
加密解密工具-SecureUtil对称加密-SymmetricCrypto非对称加密-AsymmetricCrypto摘要加密-Digester消息认证码算法-HMac签名和验证-Sign国密算法工具-SmUtil
DFA查找(Hutool-dfa)
DFA查找
HTTP客户端(Hutool-http)
Http客户端工具类-HttpUtilHttp请求-HttpRequestHttp响应-HttpResponseHTML工具类-HtmlUtilUA工具类-UserAgentUtil简易Http服务器-SimpleServer
定时任务(Hutool-cron)
全局定时任务-CronUtil
扩展(Hutool-extra)
邮件工具-MailUtil二维码工具-QrCodeUtilServlet工具-ServletUtil模板引擎封装-TemplateUtilJsch(SSH)工具-JschUtilFTP封装-FtpEmoji工具-EmojiUtil中文分词封装-TokenizerUtilSpring工具-SpringUtilCglib工具-CglibUtil拼音工具-PinyinUtil布隆过滤(Hutool-bloomFilter)切面代理工具-ProxyUtilScript工具-ScriptUtil图形验证码(Hutool-captcha)
Office文档操作(Hutool-poi)
Excel工具-ExcelUtilExcel读取-ExcelReader流方式读取Excel-Excel03SaxReader流方式读取Excel-Excel07SaxReaderExcel生成-ExcelWriterExcel大数据生成-BigExcelWriterWord生成-Word07Writer
系统调用(Hutool-system)
系统属性调用-SystemUtilOshi封装-OshiUtil