hutool 笔记二 类型转换工具 Convert

【Java 工具类 Hutool】类型转换工具类-Convert 在Java开发中我们要面对各种各样的类型转换问题,尤其是从命令行获取的用户参数、从HttpRequest获取的Parameter等等,这些参数类型多种多样,我们怎么去转换他们呢?常用的办法是先整成String,然后调用XXX.parseXXX方法,还要承受转换失败的风险,不得不加一层try catch,这个小小的过程混迹在业务代码中会显得非常难看和臃肿。 阅读详情

类型转换工具

类型转换工具Convert

Convert类

Convert类可以说是一个工具方法类,里面封装了针对Java常见类型的转换,用于简化类型转换。Convert类中大部分方法为toXXX,参数为Object,可以实现将任意可能的类型转换为指定类型。同时支持第二个参数defaultValue用于在转换失败时返回一个默认值。

  1. 转换为字符串:


转换为指定类型数组:
String[] b = { "1", "2", "3", "4" };
//结果为Integer数组
Integer[] intArray = Convert.toIntArray(b);

long[] c = {1,2,3,4,5};
//结果为Integer数组
Integer[] intArray2 = Convert.toIntArray(c);

转换为日期对象:
String a = "2017-05-06";
Date value = Convert.toDate(a);
转换为集合g
Object[] a = {"a", "你", "好", "", 1};
List<?> list = Convert.convert(List.class, a);
//从4.1.11开始可以这么用
List<?> list = Convert.toList(a);
其它类型转换
标准类型

通过Convert.convert(Class<T>, Object)方法可以将任意类型转换为指定类型,Hutool中预定义了许多类型转换,例如转换为URI、URL、Calendar等等,这些类型的转换都依托于ConverterRegistry类。通过这个类和Converter接口.

泛型类型

通过convert(TypeReference<T> reference, Object value)方法,自行new一个TypeReference对象可以对嵌套泛型进行类型转换。例如,我们想转换一个对象为List<String>类型,此时传入的标准Class就无法满足要求,此时我们可以这样:

Object[] a = { "a", "你", "好", "", 1 };
List<String> list = Convert.convert(new TypeReference<List<String>>() {}, a);

通过TypeReference实例化后制定泛型类型,即可转换对象为我们想要的目标类型。

字符串转换
各种类型转为字符串
//        各种类型转字符串
        int a = 1;
    //aStr为"1"
        String aStr = Convert.toStr(a);
        System.out.println(aStr);

        long[] b = {1,2,3,4,5};
    //bStr为:"[1, 2, 3, 4, 5]"
        String bStr = Convert.toStr(b);
        System.out.println(bStr);
        Map<String,Integer> map=new HashMap<>();
        map.put("SDfsd",4);
        map.put("dfgd",676);
        map.put("Sdfssd",4);
        System.out.println(Convert.toStr(map));
半角和全角转换

在很多文本的统一化中这两个方法非常有用,主要对标点符号的全角半角转换。

  // 半角和全角转换
        // 半角转全角
        String a1= "123456789";

//结果为:"123456789"
        String sbc = Convert.toSBC(a1);

        System.out.println(sbc);
        // 全角转半角
        //结果为"123456789"
        String dbc=Convert.toDBC(sbc);
        System.out.println(dbc);
进制转化

在很多加密解密,以及中文字符串传输(比如表单提交)的时候,会用到16进制转换,就是Hex转换,为此Hutool中专门封装了HexUtil工具类,考虑到16进制转换也是转换的一部分,因此将其方法也放在Convert类中,便于理解和查找,使用同样非常简单:


        String a = "我是一个小小可爱的字符串";
    //    字符串转化为十六进制字符串
        String hex = Convert.toHex(a, CharsetUtil.CHARSET_UTF_8);
        //结果:"e68891e698afe4b880e4b8aae5b08fe5b08fe79a84e58fafe788b1e79a84e5ad97e7aca6e4b8b2"
        System.out.println(hex);
        // 十六进制字符串转化为正常字符串
        String raw = Convert.hexToStr(hex, CharsetUtil.CHARSET_UTF_8);
//        输出
        System.out.println(raw);

因为字符串牵涉到编码问题,因此必须传入编码对象,此处使用UTF-8编码。 toHex方法同样支持传入byte[],同样也可以使用hexToBytes方法将16进制转为byte[]

不同编码字符串转换

与16进制类似,Convert类同样可以在字符串和Unicode之间轻松转换:

        String a = "我是一个小小的可爱的字符串";
        //   字符串转化为unf-8
        //结果为:"\\u6211\\u662f\\u4e00\\u4e2a\\u5c0f\\u5c0f\\u7684\\u53ef\\u7231\\u7684\\u5b57\\u7b26\\u4e32"
        String unicode = Convert.strToUnicode(a);
        System.out.println(unicode);
        String raw = Convert.unicodeToStr(unicode);
    //结果为:"我是一个小小的可爱的字符串"
        System.out.println(raw);

        //utf-8转换为ios-8859-i字符集
        String result = Convert.convertCharset(a, CharsetUtil.UTF_8, CharsetUtil.ISO_8859_1);
        //转换后result为乱码
        System.out.println(result);
        // 把编码转化出来
        String s=Convert.convertCharset(result,CharsetUtil.ISO_8859_1,CharsetUtil.UTF_8);
        System.out.println(s);
时间单位转换

Convert.convertTime方法主要用于转换时长单位,比如一个很大的毫秒,我想获得这个毫秒数对应多少分:

        long a = 4535345;

        //结果为:75
        long minutes = Convert.convertTime(a, TimeUnit.MILLISECONDS, TimeUnit.MINUTES);
        System.out.println(minutes);
金额大小写转换

面对财务类需求,Convert.digitToChinese将金钱数转换为大写形式:

        double a = 67556.32;

//结果为:"陆万柒仟伍佰伍拾陆元叁角贰分"
        String digitUppercase = Convert.digitToChinese(a);

        System.out.println(digitUppercase);

注意 转换为大写只能精确到分(小数点儿后两位),之后的数字会被忽略。

数字转换

数字转换提供多种数字转化为不同字符串的格式

//        数字转为英文表达 ONE HUNDRED AND CENTS TWENTY THREE ONLY
        String format = Convert.numberToWord(100.23);
        System.out.println(format);
//        数字简化  1.2k
        String format1 = Convert.numberToSimple(1200);
        System.out.println(format1);
//        数字转中文 数字转中文方法中,只保留两位小数  一万零八百八十九点七二
        String f1 = Convert.numberToChinese(10889.72356, false);
        System.out.println(f1);

// 使用金额大写  壹万贰仟陆佰伍拾叁
        String f2 = Convert.numberToChinese(12653, true);
        System.out.println(f2);
//        数字中文表示转换为数字 1012
        Integer i= Convert.chineseToNumber("一千零一十二");
        System.out.println(i);
原始类和包装类转换

有的时候,我们需要将包装类和原始类相互转换(比如Integer.class 和 int.class),这时候我们可以:

//去包装
Class<?> wrapClass = Integer.class;

//结果为:int.class
Class<?> unWraped = Convert.unWrap(wrapClass);

//包装
Class<?> primitiveClass = long.class;

//结果为:Long.class
Class<?> wraped = Convert.wrap(primitiveClass);

自定义转换

Hutool的默认转换有时候并不能满足我们自定义对象的一些需求,这时我们可以使用ConverterRegistry.getInstance().putCustom()方法自定义类型转换。

自定义转换器

public static class CustomConverter implements Converter<String>{
    @Override
    public String convert(Object value, String defaultValue) throws IllegalArgumentException {
        return "Custom: " + value.toString();
    }
}

注册转换器

ConverterRegistry converterRegistry = ConverterRegistry.getInstance();
//此处做为示例自定义String转换,因为Hutool中已经提供String转换,请尽量不要替换
//替换可能引发关联转换异常(例如覆盖String转换会影响全局)
converterRegistry.putCustom(String.class, CustomConverter.class);
//执行转换
int a = 454553;
String result = converterRegistry.convert(String.class, a);
Assert.assertEquals("Custom: 454553", result);
Hutool之Convert类:轻松搞定Java类型转换 在日常 Java 开发中我们要面对各种各样的类型转换问题,尤其是从命令行获取的用户参数、从HttpRequest获取的Parameter等等,这些参数类型多种多样,我们怎么去转换他们呢?常用的办法是先整成String,然后调用XXX.parseXXX方法,还要承受转换失败的风险,不得不加一层try catch,这个小小的过程混迹在业务代码中会显得非常难看和臃肿。Convert 类可以说是一个工具方法类,里面封装了针对Java常见类型的转换,用于简化类型转换。 阅读详情

相关推荐

CZT与FFT频谱分析方法对比:从任意频带重采样到高精度频谱分析

M = 85 % 输出点数f0 = 70 Hz % 起始频率DELF = 0.4 Hz % 频率步长频率分辨率提高到0.4 Hz分析带宽聚焦在[70, 103.6]Hz更清晰地分辨出78Hz和82Hz的频率分量。

2403_88098319的博客 1861

Hutool工具:使用Hutool工具进行Convert类型转换

文章目录Hutool工具:使用Hutool工具进行Convert类型转换建maven工程并在pom文件中导入依赖痛点Convert类测试hutool工具中的Convert工具类的源码启发下载hutool源码到本地题外话 Hutool工具:使用Hutool工具进行Convert类型转换 建maven工程并在pom文件中导入依赖 痛点 在Java开发中我们要面对各种各样的类型转换问题,尤其是从命令行获取的用户参数,从HttpRequest获取的Parameter等等,这些参数类型多种多样,我们怎么去转换他们呢

xzy的博客 9577

滚动时域优化方法

滚动时域优化(Receding Horizon Optimization, RHO),也被广泛称为模型预测控制(Model Predictive Control, MPC),是一种用于动态系统优化和控制的。其核心思想是“在每个当前时刻k,控制器只考虑未来一个(称为“预测时域”或“优化时域”,长度N)内的系统行为。(通过测量或估计得到)。(描述状态如何随输入和干扰变化)。(如果有,可能基于历史数据或假设)。在这个有限的未来时域[k, k+N-1]上,求解一个。这个优化问题的目标是找到一个。

m0_69522810的博客 2301

hutool(字符串工具-StrUtil与类型转换工具类-Convert)

不得不提一下这个方法,有人说String有了subString你还写它干啥,我想说subString方法越界啥的都会报异常,你还得自己判断,难受死了,我把各种情况判断都加进来了,而且index的位置还支持负数哦,-1表示最后一个字符(这个思想来自于Python,如果学过Python的应该会很喜欢的),还有就是如果不小心把第一个位置和第二个位置搞反了,也会自动修正(例如想截取第4个和第2个字符之间的部分也是可以的哦~) 举个栗子。因为字符串牵涉到编码问题,因此必须传入编码对象,此处使用UTF-8编码。

madleep的博客 1万+

图像传感器与信号处理——SFR算法/ISO 12233解读

图像传感器与信号处理——SFR算法图像传感器与信号处理——SFR算法1. 前言2. 基于视觉的分辨率测量方法3. 基于边界的SFR算法4. 基于正弦波的SFR算法 图像传感器与信号处理——SFR算法 SFR的全称是Spatial Frequency Response,空间频率响应。介绍SFR算法的参考文献主要是ISO 12233这篇英文文档。和读一般的论文感觉不同,文档读起来更加晦涩难懂,可能是因...

weixin_44580210的博客 1万+

别再为格式发愁:safetensors转GGUF的三种高效方法及Ollama集成对比

本文详细介绍了将safetensors格式转换为GGUF格式的三种高效方法,包括llama.cpp原生转换、GGUF官方工具链和Transformers中转方案,并对比了它们在Ollama集成中的表现。文章还提供了实际项目中的踩坑经验和性能调优建议,帮助开发者快速掌握模型转换技术。

weixin_42651281的博客 641

常用Convert类的类型转换方法

常用Convert类的类型转换方法 方法 说明 Convert.ToInt32() 转换为整型(int 型) Convert.ToStringle() 转换为单精度浮点型(float 型) Convert.ToDouble() 转换为双精度浮点型(double 型) Convert.ToString() 转换为字符串类型(string 型) ...

九之者 7481

UE 动态获取 资源缩略图 下载到本地或返回图片信息

UE 动态加载资源缩略图 返回图片信息或保存到本地

qq_46080252的博客 1938

hutool的类型转换类-convert的使用

第一步:导入依赖的maven <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.5.6</version> </dependency> 类型转换工具类-Convert 为什么我们要使用这个工具类? 在Java开发中我们要面对各种各样的类型转换问题,尤其是从命令

坤的博客 8178

【OS】AUTOSAR OS系统调用产生Trap的过程详解

AUTOSAR OS系统调用产生Trap的过程详解

qq_36056498的博客 2440

把 MANDT 锁进保险箱:ABAP Client Handling 与 Client Isolation(聚焦 AMDP 的 Client Safety )

本文探讨了ABAP系统中Client Handling与Client Isolation机制的演进,重点分析了AMDP环境下多租户隔离的风险与解决方案。传统ABAP SQL/CDS通过隐式Client过滤提供安全保障,而AMDP因其原生SQLScript特性容易绕过隔离机制。文章对比了旧时代依赖开发自觉的传参方式与新时代通过AMDP OPTIONS强约束的语法方案,详细介绍了CLIENT INDEPENDENT和CDS SESSION CLIENT DEPENDENT两种编译期安全机制,阐述了USING列表

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 343

工具类库 Hutool介绍与使用(请记得收藏)

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。Hutool中的工具方法来自于每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。

houxian1103的博客 1万+

MAVLink协议详解

MAVLink是为微型飞行器MAV(Micro Air Vehicle)设计的(LGPL)开源的通讯协议。是无人飞行器和地面站(Ground Control Station ,GCS)之间,以及无人飞行器之间通讯常用的协议。APM、PIXHAWK飞控,Mission Planner、QGroundControl地面站均使用了MAVLink协议进行通讯。 MAVLink源码下载地址(现已更新至v2.0):https://github.com/mavlink/qgroundcontrol   用户手册:ht

程序猿老樊的博客 7709

还在手动强转类型?Hutool Convert 让类型转换少写 90% 代码,告别 ClassCastException

摘要:Hutool的Convert工具类简化了Java类型转换的常见痛点,如强转报错、null处理和格式兼容问题。它支持五种核心场景: 基本类型转换(String↔int/long/boolean),自动处理null和非标准值; 日期类型转换,自动识别字符串和毫秒时间戳格式; 集合与数组转换,支持List与String数组互转; Map与JavaBean互转,无需手动映射字段; 任意对象转字符串,自动调用toString()并处理null。 相比原生转换,Convert通过一行代码替代冗余的判空和异常处理,

weixin_40725027的博客 928

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Hutool工具类

Hutool工具类 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.0.M3</version> </dependency>

左--右 8093

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Hutool核心工具类之Convert使用

<一>:Convert万能转换器。 (1):转换为字符串 long[] b = {1,2,3,4,5}; //bStr为:"[1, 2, 3, 4, 5]" String bStr = Convert.toStr(b); // String aStr = Convert.toStr(21); //aStr为"21" (2)转换为指定类型数组 String[] b = { "1", "2", "3", "4" }; //结果为Integer数组 Integer[] intArray = Conv

Iloveskr 4451

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

基于hutool的MD5加密以及hutool的一些常用工具

hutool java

zlfjavahome的专栏 1万+

SpringBoot集成使用Hutool

什么是Hutool? Hutool是一个小而全的java工具类库,是util包有好的代替。 在pom文件中引入Hutool依赖 <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId>

D_ps19990501的博客 5145

Hutool中那些常用的工具类和方法

面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典Java核心知识整理Java核心知识Spring全家桶(实战系列)其他电子书资料Step3:刷题既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。以下是我私藏的面试题库:《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》

2401_84413531的博客 1612

hutool,真香!

hutool。Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。Hutool的设计思想是尽量减少重复的定义,让项目中的util这个package尽量少,总的来说有如下的几个思想:方法优先于对象自动识别优于用户定义便捷性与灵活性并存适配与兼容可选依赖原则无侵入原则。

1905

Hutool核心工具类之Convert万能转换器\String工具类之StrUtil\对象工具-ObjectUtil\数组工具-ArrayUtil\随机工具-RandomUtil等等

Hutool核心,包括Bean操作、日期、各种Util等 <一>:Convert万能转换器。 (1):转换为字符串 long[] b = {1,2,3,4,5}; //bStr为:"[1, 2, 3, 4, 5]" String bStr = Convert.toStr(b); ---------------------------- String aStr = Convert.toStr(21); //aStr为"21" (2)转换为指定类型数组 String[] b = { "1", "2

会敲代码的小白鼠的博客 1万+

HuTool 工具类简单使用

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

weixin_46047612的博客 9193

Hutool中的这些工具类,太实用了

Hutool中的这些工具类,太实用了

LINgZone2的博客 1626

Hutool工具库实战:8大核心工具类深度解析

文章摘要 Hutool是一款强大的Java工具库,旨在简化开发中的常见操作。它提供了日期处理(DateUtil)、字符串操作(StrUtil)等8大核心工具类,具有全面、简洁、可靠的特点。DateUtil支持智能日期解析、格式化、计算和判断,适用于订单处理、会员管理等场景;StrUtil提供强大的字符串判空、处理功能。Hutool经过数千项目验证,无第三方依赖,能显著减少代码量,提高开发效率。本文通过真实案例展示了这些工具在生产环境中的实际应用价值。

qq_41262225的博客 1434

Hutool神器之Convert类:轻松搞定Java类型转换!

Hutool的Convert类是一个非常强大的工具类,能够极大地简化Java开发中的类型转换操作。无论是基本类型、日期、集合,还是复杂对象,Convert类都能轻松应对。如果你还在为类型转换而烦恼,不妨试试Hutool的Convert类,相信它会成为你开发中的得力助手!

hjbjmn的博客 762
上一篇: 桥接模式 rust和java的实现
下一篇: Hutool 笔记 日期工具类的使用
过去日记
过去日记 新星创作者: 后端开发技术领域 新星创作者: 后端开发技术领域
博客等级 码龄3年 5343粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

过去日记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值