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

目录

一、认识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 对象转换为 Map
        Map<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); // 预期输出:true

        ArrayUtil.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工具类
        // 创建一个 Map
        Map<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");
        
        // 清空 Map
        map.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:系统信息工具类

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

探索星辰大海

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

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

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

打赏作者

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

抵扣说明:

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

余额充值