当前位置: 首页> 汽车> 行情 > 工具类库(hutool) Java程序员必备

工具类库(hutool) Java程序员必备

时间:2025/8/9 23:48:26来源:https://blog.csdn.net/qq_69183322/article/details/140913047 浏览次数: 1次

目录

一、认识hutool工具类库

二、引入hutool 工具类库依赖

三、 hutool 工具类库-常用

最常用的工具类

BeanUtil :

核心工具类

Convert:类型转换工具类

DateUtil:日期时间工具类

StrUtil:字符串工具类

NumberUtil:数字工具类

CollUtil:集合工具类

ArrayUtil:数组工具类

MapUtil:Map工具类

ClassUtil:类工具类

ReflectUtil:反射工具类

加密解密

SecureUtil:安全相关工具类,提供MD5、SHA、AES等算法

DigestUtil:摘要算法工具类

JSON

JSONUtil:JSON解析和生成工具类

四、hutool 工具类库-不常用

XML

XmlUtil:XML解析工具类

IO

IoUtil:IO流工具类

FileUtil:文件工具类

CharsetUtil:编码工具类

ZipUtil:压缩工具类

HttpClient

HttpUtil:HTTP客户端工具类

HttpsUtil:HTTPS客户端工具类

缓存

CacheUtil:缓存工具类

数据库

动态数据库

DSFactory:动态数据源工厂

DS:动态数据源

验证码

CaptchaUtil:验证码工具类

其他

BloomFilter:布隆过滤器

ClipboardUtil:剪贴板工具类

IdUtil:ID生成器工具类

RuntimeUtil:运行时工具类

SystemUtil:系统信息工具类


一、认识hutool工具类库

Hutool是一个小而全的Java工具类库,它简化了Java开发中的很多复杂操作,提供了大量的工具方法。Hutool的设计哲学是尽量减少重复的定义,让Java开发变得更加轻松和高效。

Hutool工具包的一些特点:

  • 全面性:Hutool涵盖了Java开发中常用的工具类,比如字符串处理、日期时间处理、各种集合操作、文件和流处理等。

  • 实用性:Hutool提供的工具方法贴近实际开发需求,能够有效提升开发效率。

  • 轻量级:Hutool没有依赖其他第三方库,体积小巧,便于集成。

  • 一致性:Hutool的API设计遵循统一的风格,便于上手和使用。

Hutool的主要功能模块包括但不限于:

  • 核心:提供最基础的工具类,如Object工具类、日期工具类、数组工具类等。
  • 加密解密:简化Java中加密解密操作,支持对称加密、非对称加密、摘要算法等。
  • JSON:简化JSON操作,支持JSON字符串与JavaBean的相互转换。
  • 日期时间:强大的日期时间工具类,简化日期时间的转换和处理。
  • 数据库:简化数据库操作,支持数据库连接池管理。
  • 设置:提供高效的设置文件和属性文件操作。
  • 日志:提供分级别日志记录,简化日志管理。
  • Http客户端:简化Http请求操作,支持同步和异步请求。

二、引入hutool 工具类库依赖

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

三、 hutool 工具类库-常用

最常用的工具类

  • BeanUtil :
        // 创建一个 Map,其中包含要填充到 User 对象的属性值Map<String, Object> map = new HashMap<>();map.put("username", "张三");map.put("age", 18);// 创建一个 User 对象User user = new User();// 使用 BeanUtil.fillBeanWithMap 方法填充 User 对象的属性BeanUtil.fillBeanWithMap(map,user,true);System.out.println(user);//使用 BeanUtil.beanToMap 方法将 User 对象转换为 MapMap<String,Object> newUser = BeanUtil.beanToMap(user);System.out.println(newUser);// 使用BeanUtil.copyProperties方法将 User 对象复制到另一个 User 对象User user2 = new User();BeanUtil.copyProperties(user, user2);System.out.println(user2);

核心工具类

  • Convert:类型转换工具类

示例代码:

        // 将字符串转换为整数int intVal = Convert.toInt("12345");System.out.println("字符串 '12345' 转换为整数: " + intVal); // 预期输出: 字符串 '12345' 转换为整数: 12345// 将字符串转换为长整型long longVal = Convert.toLong("123456789012345");System.out.println("字符串 '123456789012345' 转换为长整型: " + longVal); // 预期输出: 字符串 '123456789012345' 转换为长整型: 123456789012345// 将字符串转换为浮点数double doubleVal = Convert.toDouble("123.456");System.out.println("字符串 '123.456' 转换为浮点数: " + doubleVal); // 预期输出: 字符串 '123.456' 转换为浮点数: 123.456// 将字符串转换为布尔值boolean boolVal = Convert.toBool("true");System.out.println("字符串 'true' 转换为布尔值: " + boolVal); // 预期输出: 字符串 'true' 转换为布尔值: true// 将数组转换为集合String[] strArray = {"a", "b", "c"};List<String> strList = Convert.toList(String.class, strArray);System.out.println("数组转换为集合: " + strList); // 预期输出: 数组转换为集合: [a, b, c]// 将集合转换为数组String[] arrayFromList = Convert.toStrArray(strList);System.out.println("集合转换为数组: " + Arrays.toString(arrayFromList)); // 预期输出: 集合转换为数组: [a, b, c]
  • DateUtil:日期时间工具类
        // 获取当前时间System.out.println("当前时间:" + DateUtil.now()); // 输出当前时间字符串// 解析日期时间字符串String dateStr = "2024-08-04 12:30:45";System.out.println("解析日期时间字符串:" + DateUtil.parse(dateStr)); // 输出解析后的日期时间// 格式化日期时间System.out.println("格式化当前时间:" + DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm:ss")); // 按指定格式输出当前时间// 计算日期时间差String startDateStr = "2024-08-01 00:00:00";String endDateStr = "2024-08-04 12:30:45";long betweenDay = DateUtil.between(DateUtil.parse(startDateStr), DateUtil.parse(endDateStr), DateUnit.DAY);System.out.println("两个日期之间的天数差:" + betweenDay); // 输出两个日期之间的天数差// 日期时间偏移System.out.println("当前时间加一天:" + DateUtil.offsetDay(DateUtil.date(), 1)); // 输出当前时间加一天后的日期// 获取月份的第一天和最后一天System.out.println("当前月份的第一天:" + DateUtil.beginOfMonth(DateUtil.date())); // 输出当前月份的第一天System.out.println("当前月份的最后一天:" + DateUtil.endOfMonth(DateUtil.date())); // 输出当前月份的最后一天
  • StrUtil:字符串工具类
        // 检查字符串是否为空boolean isEmpty = StrUtil.isEmpty("  "); // 空格字符串System.out.println("字符串是否为空(包括空格):" + isEmpty); // 预期输出:true// 检查字符串是否为空白boolean isBlank = StrUtil.isBlank("  "); // 空格字符串System.out.println("字符串是否为空白:" + isBlank); // 预期输出:true// 去除字符串两端的空格String trimmedStr = StrUtil.trim("  Hello Hutool!  ");System.out.println("去除两端空格后的字符串:" + trimmedStr); // 预期输出:Hello Hutool!// 拼接字符串;String joinedStr = StrUtil.join(",", "a", "b", "c");System.out.println("拼接后的字符串:" + joinedStr); // 预期输出:a,b,c// 字符串长度int length = StrUtil.length("Hello Hutool!");System.out.println("字符串长度:" + length); // 预期输出:13// 首字母大写String capitalizedStr = StrUtil.upperFirst("hello hutool!");System.out.println("首字母大写后的字符串:" + capitalizedStr); // 预期输出:Hello hutool!// 首字母小写String uncapitalizedStr = StrUtil.lowerFirst("HELLO HUTOOL!");System.out.println("首字母小写后的字符串:" + uncapitalizedStr); // 预期输出:hELLO HUTOOL!// 判断字符串是否包含子串boolean contains = StrUtil.contains("Hello Hutool!", "Hutool");System.out.println("字符串是否包含子串 'Hutool':" + contains); // 预期输出:true// 判断字符串是否以特定子串开头boolean startsWith = StrUtil.startWith("Hello Hutool!", "Hello");System.out.println("字符串是否以 'Hello' 开头:" + startsWith); // 预期输出:true// 判断字符串是否以特定子串结尾boolean endsWith = StrUtil.endWith("Hello Hutool!", "Hutool!");System.out.println("字符串是否以 'Hutool!' 结尾:" + endsWith); // 预期输出:true
  • NumberUtil:数字工具类
        // 字符串转数字String numStr = "123.456";double num = NumberUtil.parseDouble(numStr);System.out.println("字符串转double:" + num); // 预期输出:123.456// 数字格式化String formattedNum = NumberUtil.decimalFormat("0.00", num);System.out.println("格式化数字:" + formattedNum); // 预期输出:123.46// 数字四舍五入double roundedNum = NumberUtil.round(num, 2);System.out.println("四舍五入后的数字:" + roundedNum); // 预期输出:123.46// 计算百分比double percentage = NumberUtil.percent(50, 200);System.out.println("50是200的百分比:" + percentage + "%"); // 预期输出:25%// 判断是否为数字boolean isNumber = NumberUtil.isNumber("123.456");System.out.println("字符串 '123.456' 是否为数字:" + isNumber); // 预期输出:true// 判断是否为整数boolean isInteger = NumberUtil.isInteger("123");System.out.println("字符串 '123' 是否为整数:" + isInteger); // 预期输出:true// 判断是否为素数boolean isPrime = NumberUtil.isPrime(17);System.out.println("数字 17 是否为素数:" + isPrime); // 预期输出:true// 数字范围限定int limitedNum = NumberUtil.range(100, 0, 200);System.out.println("数字100限定在0到200之间:" + limitedNum); // 预期输出:100// 数字相加double sum = NumberUtil.add(10.5, 20.3);System.out.println("10.5和20.3的和:" + sum); // 预期输出:30.8// 数字相减double subtract = NumberUtil.sub(20.3, 10.5);System.out.println("20.3减去10.5的结果:" + subtract); // 预期输出:9.8
  • CollUtil:集合工具类
        // 字符串转数字String numStr = "123.456";double num = NumberUtil.parseDouble(numStr);System.out.println("字符串转double:" + num); // 预期输出:123.456// 数字格式化String formattedNum = NumberUtil.decimalFormat("0.00", num);System.out.println("格式化数字:" + formattedNum); // 预期输出:123.46// 数字四舍五入BigDecimal roundedNum = NumberUtil.round(num, 2);System.out.println("四舍五入后的数字:" + roundedNum); // 预期输出:123.46// 判断是否为数字boolean isNumber = NumberUtil.isNumber("123.456");System.out.println("字符串 '123.456' 是否为数字:" + isNumber); // 预期输出:true// 判断是否为整数boolean isInteger = NumberUtil.isInteger("123");System.out.println("字符串 '123' 是否为整数:" + isInteger); // 预期输出:true// 判断是否为素数boolean isPrime = NumberUtil.isPrimes(17);System.out.println("数字 17 是否为素数:" + isPrime); // 预期输出:true// 数字范围限定int[] limitedNum = NumberUtil.range(0, 200, 80);System.out.println("数字80限定在0到200之间:" + Arrays.toString(limitedNum)); // 预期输出:[0, 80, 160]// 数字相加double sum = NumberUtil.add(10.5, 20.3);System.out.println("10.5和20.3的和:" + sum); // 预期输出:30.8// 数字相减double subtract = NumberUtil.sub(20.3, 10.5);System.out.println("20.3减去10.5的结果:" + subtract); // 预期输出:9.8
  • ArrayUtil:数组工具类
        // 创建一个数组int[] intArray = {1, 2, 3, 4, 5};// 获取数组长度int length = ArrayUtil.length(intArray);System.out.println("数组长度:" + length); // 预期输出:5// 获取数组第一个元素int firstElement = ArrayUtil.get(intArray, 0);System.out.println("数组第一个元素:" + firstElement); // 预期输出:1// 获取数组最后一个元素int lastElement = ArrayUtil.get(intArray, length - 1);System.out.println("数组最后一个元素:" + lastElement); // 预期输出:5// 检查数组是否包含某个元素boolean contains = ArrayUtil.contains(intArray, 3);System.out.println("数组是否包含元素 3:" + contains); // 预期输出:trueArrayUtil.isSorted(intArray);System.out.println("排序后的数组:" + Arrays.toString(intArray)); // 预期输出:[1, 2, 3, 4, 5]// 数组反转int[] reversedArray = ArrayUtil.reverse(intArray);System.out.println("反转后的数组:" + Arrays.toString(reversedArray)); // 预期输出:[5, 4, 3, 2, 1]
  • MapUtil:Map工具类
        // 创建一个 MapMap<String, Object> map = MapUtil.createMap(HashMap.class);// 向 Map 中添加元素map.put("key1", "value1");map.put("key2", "value2");map.put("key3", "value3");// 获取 Map 中的元素Object value1 = map.get("key1");System.out.println("获取元素 value1:" + value1); // 预期输出:value1// 检查 Map 是否包含某个键boolean containsKey = map.containsKey("key2");System.out.println("Map 是否包含键 key2:" + containsKey); // 预期输出:true// 检查 Map 是否包含某个值boolean containsValue = map.containsValue("value2");System.out.println("Map 是否包含值 value2:" + containsValue); // 预期输出:true// 删除 Map 中的元素map.remove("key1");// 清空 Mapmap.clear();// 检查 Map 是否为空boolean isEmpty = MapUtil.isEmpty(map);System.out.println("Map 是否为空:" + isEmpty); // 预期输出:true
  • ClassUtil:类工具类
        // 获取 Class 对象Class<?> clazz = ClassUtil.getClass(String.class);System.out.println("获取 Class 对象:" + clazz); // 预期输出:class java.lang.String// 获取 Class 对象的字符串表示String className = ClassUtil.getClassName(String.class,true);System.out.println("获取 Class 对象的字符串表示:" + className); // 预期输出:String// 获取 Class 对象的类名String simpleName = ClassUtil.getClassName(String.class,true);System.out.println("获取 Class 对象的类名:" + simpleName); // 预期输出:String// 获取 Class 对象的包名String packageName = com.fasterxml.jackson.databind.util.ClassUtil.getPackageName(String.class);System.out.println("获取 Class 对象的包名:" + packageName); // 预期输出:java.lang
  • ReflectUtil:反射工具类
        // 获取 User 类的字段Field[] fieldNames = ReflectUtil.getFields(User.class);System.out.println("获取 User 类的字段名:" + Arrays.toString(fieldNames));// 获取方法信息Method[] methods = ReflectUtil.getMethods(User.class);System.out.println("获取 User 类的方法信息:" + Arrays.toString(methods));// 获取构造方法信息Constructor<?>[] constructors = ReflectUtil.getConstructors(User.class);System.out.println("获取 User 类的构造方法信息:" + Arrays.toString(constructors));

加密解密

  • SecureUtil:安全相关工具类,提供MD5、SHA、AES等算法
        // 使用 MD5 算法进行加密String md5 = SecureUtil.md5("password");System.out.println("MD5 加密结果:" + md5);// 使用 SHA 算法进行加密String sha1 = SecureUtil.sha1("password");System.out.println("SHA1 加密结果:" + sha1);// 使用 SHA-256 算法进行加密String sha256 = SecureUtil.sha256("password");System.out.println("SHA-256 加密结果:" + sha256);
  • DigestUtil:摘要算法工具类
        // 使用 MD5 算法进行摘要String md5 = DigestUtil.md5Hex("password");System.out.println("MD5 摘要结果:" + md5);// 使用 SHA-1 算法进行摘要String sha1 = DigestUtil.sha1Hex("password");System.out.println("SHA-1 摘要结果:" + sha1);

JSON

  • JSONUtil:JSON解析和生成工具类
        // 创建一个 JSONObject 对象JSONObject jsonObject = new JSONObject();jsonObject.put("name", "张三");jsonObject.put("age", 25);jsonObject.put("email", "zhangsan@example.com");// 将 JSONObject 对象转换为 JSON 字符串String jsonStr = JSONUtil.toJsonStr(jsonObject);System.out.println("JSON 字符串:" + jsonStr);// 将 JSON 字符串转换为 JSONObject 对象JSONObject parsedJson = JSONUtil.parseObj(jsonStr);System.out.println("解析后的 JSONObject:" + parsedJson);// 将 JSON 字符串转换为 Java 对象User user = JSONUtil.toBean(jsonStr, User.class);System.out.println("解析后的 Java 对象:" + user);

四、hutool 工具类库-不常用

XML

  • XmlUtil:XML解析工具类

IO

  • IoUtil:IO流工具类
  • FileUtil:文件工具类
  • CharsetUtil:编码工具类
  • ZipUtil:压缩工具类

HttpClient

  • HttpUtil:HTTP客户端工具类
  • HttpsUtil:HTTPS客户端工具类

缓存

  • CacheUtil:缓存工具类

数据库

  • DbUtil:数据库操作工具类
  • DbRuntimeException:数据库异常

动态数据库

  • DSFactory:动态数据源工厂
  • DS:动态数据源

验证码

  • CaptchaUtil:验证码工具类

其他

  • BloomFilter:布隆过滤器
  • ClipboardUtil:剪贴板工具类
  • IdUtil:ID生成器工具类
  • RuntimeUtil:运行时工具类
  • SystemUtil:系统信息工具类

关键字:工具类库(hutool) Java程序员必备

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: