Java - HuTool 使用 ArrayUtil、StrUtil等工具类(一)
本篇主要介绍 HuTool工具, 其是 java工具类,对于一些静态方法进行封装,虽然很小,但很全,里面拥有平时我们会用到的工具类,就无需我们自己去封装了
以前我还自己去封装,emmm,我真的太傻了~,但是自己封装也不是不好,但是学会站在巨人的肩膀上,也非常有必要
下面就简单介绍一下 HuTool工具 与 其简单使用
相关链接:
HuTool 工具介绍
Hutool 是一个小而全的 Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,涵盖了Java开发开发中的方方面面
使用 Hutool 可节省开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug
该工具类主要对 文件、流、加密解密、转码、正则、线程、XML等 JDK方法进行封装,组成各种Util工具类,同时提供以下组件:
模块 | 介绍 |
---|---|
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)封装实现 |
可根据需求对每个模块 单独引入,也可以通过引入hutool-all
方式引入所有模块
HuTool工具使用
HuTool 工具 的API文档与官网把其能干的事情说的很详细了,下面主要是列举出工具类能干什么,方法有哪些,顺带可以提一下原理是啥,会用并且懂原理是最好的学习方式
1、导包
使用首先导包,在项目的 pom.xml 中加入以下内容:【Hutool 5.x 支持 JDK8+,JDK7 使用 Hutool 4.x版本】Maven中央库
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.0</version>
</dependency>
若使用jar包,可去该 下载jar 网址下载hutool-all-X.X.X.jar
即可
2、使用
这一小篇主要介绍第一类工具,即 基本类型 / 数组 / 数据类型转换 工具类,该类别主要有关于对数组操作、一些基本类型的操作、进制转换 等相关功能进行了封装( API 文档 ),涉及到的工具类如下:
- ArrayUtil:数组工具类
- BooleanUtil :Boolean 类型相关工具类
- ByteUtil:Byte 类型相关工具类
- CharUtil:字符工具类
- StrUtil:字符串工具类
- NumberUtil:数字工具类
- EnumUtil:枚举工具类
- CharsetUtil:字符集工具类
- HexUtil:十六进制工具类
- RadixUtil:进制转换工具类
- PrimitiveArrayUtil:原始类型数组工具类
这里简单介绍一些:
2.1 ArrayUtil:数组工具类( API 文档 )
其里面有很多方法,但是有很多重载方法,根据不同类型的传参进行重载,为各个类型提供实现
具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法
方法 | 功能 | 支持类型 | 原理 |
---|---|---|---|
isEmpty | 是否为空 | 8大基本类型 | |
isNotEmpty | 是否为空 | 8大基本类型 | |
resize | 数组调整大小,补0/截断 | byte | System.arraycopy |
addAll | 数组合并 | 8大基本类型 | System.arraycopy |
range | 生成数字列表: 从0开始,给定终止位置 给定起始终止位置正序 给定起始终止位置倒序 | int | 循环实现 |
split | 拆分byte数组为几个等份 | byte | System.arraycopy |
indexOf | 返回数组中指定元素所在位置 | 8大基本类型 | 循环实现 |
lastIndexOf | 返回数组中指定元素所在最后的位置 | 8大基本类型 | 循环实现 |
contains | 数组中是否包含元素 | 8大基本类型 | 使用indexOf,循环实现 |
wrap | 将原始类型数组包装为包装类型 | 8大基本类型 | 循环实现 |
unWrap | 包装类数组转为原始类型数组,null转为0 | 8大基本类型 | 循环实现 |
sub | 获取包含起始位置,不包含终止位置的子数组 | 8大基本类型 | System.arraycopy |
remove | 移除数组中对应位置的元素 | 8大基本类型 | System.arraycopy |
removeEle | 移除数组中指定的元素,只会移除匹配到的第一个元素 | 8大基本类型 | System.arraycopy |
reverse | 对包含起始位置,不包含终止位置的数组进行反转,会变更原数组 | 8大基本类型 | 循环交换 |
min / max | 取数组最小值 / 最大值 | 8大基本类型 | 循环比较 |
shuffle | 打乱数组顺序,会变更原数组 | 8大基本类型 | 循环交换 |
swap | 交换数组中两个位置的值 | 8大基本类型 | 循环交换 |
isSorted isSortedASC | 检查数组是否升序 | 8大基本类型 | 循环比较 |
isSortedDESC | 检查数组是否降序 | 8大基本类型 | 循环比较 |
2.2 BooleanUtil :Boolean 类型相关工具类( API 文档 )
其里面主要针对 Boolean / boolean 类型 实现一些功能
具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法
方法 | 功能 | 支持类型 | 原理 |
---|---|---|---|
negate | 取相反值 | Boolean / boolean | |
isTrue | 是否为True | Boolean | |
isFalse | 是否为False | Boolean | |
toBoolean | 转换字符串为boolean值 字符串为以下任意均为True: “true”, “yes”, “y”, “t”, “ok”, “1”, “on”, “是”, “对”, “真”, “對”, “√” | String | |
toInt toInteger toChar toCharacter toByte toByteObj toLong toLongObj toShort toShortObj toFloat toFloatObj toDouble toDoubleObj | boolean值转为其他基本类型 / 基本类型的包装类型 | boolean | |
toStringTrueFalse toStringOnOff toStringYesNo toString | boolean值转为String 字符串 true 或者 false 字符串 on 或者 off 字符串 yes 或者 no 指定正确/错误的字符串 | boolean | |
isBoolean | 给定类是否为Boolean或者boolean | Class | |
and andOfWrap | 对Boolean数组取与 | Boolean / boolean | 循环实现 |
or orOfWrap | 对Boolean数组取或 | Boolean / boolean | 循环实现 |
xor xorOfWrap | 对Boolean数组取异或 | Boolean / boolean | 循环实现 |
2.3 ByteUtil:Byte 类型相关工具类( API 文档 )
其里面主要针对 byte 类型 实现一些功能
具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法
方法 | 功能 | 支持类型 | 原理 |
---|---|---|---|
intToByte byteToUnsignedInt | int转byte byte转无符号int | int byte | 强转 二进制与 |
xxxxToBytes bytesToxxxx | xxx 转 byte 数组 byte 数组转 xxx | xxx可为 int / short / long / float / double / number byte | 二进制与 |
2.4 CharUtil:char 类型相关工具类( API 文档 )
其里面主要针对 char 类型 实现一些功能
具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法
方法 | 功能 | 支持类型 | 原理 |
---|---|---|---|
isAscii | 字符是否为ASCII字符(0~127) | char | 左移位数判断是否为0 |
isAsciiPrintable | 字符是否为可见ASCII字符(32~126) | char | |
isAsciiControl | 字符是否为ASCII控制符(不可见字符)(0~31和127) | char | |
isLetter isLetterUpper isLetterLower | 字符是否为字母(A-Z a-z) 是否为大写字母(A-Z) 是否为小写字母(a-z) | char | |
isNumber | 字符是否为数字字符(0-9) | char | |
isHexChar | 字符是否为16进制规范的字符(09、af、A~F) | char | |
isLetterOrNumber | 字符是否是数字或者字母(AZ、az、0~9) | char | |
isCharClass isChar | 给定类名是否为字符类(Char 、Character) 给定对象对应的类是否为字符类(Char 、Character) | Class Object | |
isBlankChar | 字符是否是空白串 | char | |
getType | int转字符类型 | int | |
isFileSeparator | 字符是否为Windows 或者Linux(Unix)文件分隔符 | char | |
toString | 字符转字符串 | char | |
equals | 比较两个字符是否相同 | char | |
digit16 | 获取给定字符的16进制数值 | int(字符int) | |
toCloseChar | 将字母、数字转换为带圈的字符:‘1’ -》 ‘①’ ‘A’ -》 ‘Ⓐ’ ‘a’ -》 ‘ⓐ’ | char | |
toCloseByNumber | 将[1-20]数字转换为带圈的字符:1 -》 ‘①’ 12 -》 ‘⑫’ 20 -》 ‘⑳’ | char |
2.5 StrUtil:String类型相关工具类( API 文档 )
其里面主要针对 String 类型 实现一些功能
具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法
方法 | 功能 | 支持类型 | 原理 |
---|---|---|---|
isBlankIfStr | 判断字符串是否为空白(空字符串、空格、全角空格、制表符、换行符) | Object | |
isEmptyIfStr | 判断字符串是否为空串(null、空字符串) | Object | |
trim | 字符串数组全部去除首尾空格 | String[] | |
utf8Str | 将对象转为字符串 | Object | |
str | 将对象转为字符串 | Object、byte[]、Byte[]、ByteBuffer | |
toString toStringOrNull | 对象的toString方法,null会返回“null” 调用对象的toString方法,null会返回 null | Object | |
builder strBuilder | 创建StringBuilder对象 | ||
getReader getWriter | 获得StringReader 获得StringWriter | ||
fillBefore fillAfter fill | 已有字符串填充为规定长度,超过这个长度则返回这个字符串(之前) 将已有字符串填充为规定长度,超过这个长度则返回这个字符串(之后) 将已有字符串填充为规定长度,超过这个长度则返回这个字符串(指定填充位置) | String | |
reverse | 字符串反转 | String | |
similar | 计算两个字符串的相似度 / 相似度百分比 | String | |
uuid | 生成随机UUID | ||
format | 格式化文本 | CharSequence |
2.6 NumberUtil:Number 类型相关工具类( API 文档 )
其里面主要针对 Number 类型 实现一些功能
具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法
方法 | 功能 | 支持类型 | 原理 |
---|---|---|---|
add sub mul div ceilDiv | 加法运算、减法运算、乘法运算、除法运算、向上取整除法 | float、double、Number | |
round roundStr roundDown roundHalfEven | 保留固定位数小数 保留固定位数小数字符串 保留固定小数位数,舍去多余位数 四舍六入五成双计算法 | double、String、BigDecimal | |
decimalFormat | 以格式化方式进行double格式化 | double | |
decimalFormatMoney | 格式化金额输出,每三位用逗号分隔 | double | |
formatPercent | 格式化百分比,小数采用四舍五入方式 | double | |
isInteger isLong isDouble isPrimes | 判断字符是否为数字 判断字符串是否是Long类型 判断字符串是否是浮点数 判断一个数是否是质数(素数) | CharSequence String String int | |
generateRandomNumber generateBySet | 根据给定的最小数字和最大数字,以及随机数的个数,产生指定不重复数组 | ||
range appendRange | 从指定位置(默认为0)开始的整数列表,指定步进(默认为1) 将给定范围内的整数添加到已有集合中,指定步进(默认为1) | long、BigInteger | |
factorial | 计算范围阶乘 | long | |
sqrt divisor multiple | 平方根算法 最大公约数 最小公倍数 | long int int | |
compare | 比较两个值的大小 | char long double short int short | |
getBinaryStr binaryToInt binaryToLong | 获得数字对应的二进制字符串 二进制转int 二进制转long | ||
isGreater isGreaterOrEqual isLess isLessOrEqual | 比较大小 | BigDecimal | |
min max equals | 比较最小值 比较最大值 比较是否相等 | T int long short byte double BigDecimal |
总结
这一类型的工具类主要对一些数据类型的操作进行了封装,这里列举了一些Util,也介绍了一些Util,其他可以看具体的文档,涉及到的原理没有说明的,就是一些for循环、if 操作等一些简单操作