前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hutool工具类库之类型转换工具类

Hutool工具类库之类型转换工具类

作者头像
程序员云帆哥
发布2023-07-09 15:49:07
5950
发布2023-07-09 15:49:07
举报
文章被收录于专栏:程序员云帆哥

一、简介

痛点

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

Convert类

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

二、Java常见类型转换

1、转换为字符串

代码语言:javascript
复制
int a = 1;
// aStr为"1"
String aStr = Convert.toStr(a);

long[] b = {1,2,3,4,5};
// bStr为:"[1, 2, 3, 4, 5]"
String bStr = Convert.toStr(b);

2、转换为指定类型数组

代码语言:javascript
复制
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);

3、转换为日期对象

代码语言:javascript
复制
String a = "2017-05-06";
Date value = Convert.toDate(a);

4、转换为集合

代码语言:javascript
复制
Object[] a = {"a", "你", "好", "", 1};
List<?> list = Convert.convert(List.class, a);
//从4.1.11开始可以这么用
List<?> list = Convert.toList(a);

5、半角和全角转换

代码语言:javascript
复制
// 半角转全角
String a = "123456789";
// 结果为:"123456789"
String sbc = Convert.toSBC(a);

// 全角转半角
String a = "123456789";
// 结果为"123456789"
String dbc = Convert.toDBC(a);

6、Unicode和字符串转换

代码语言:javascript
复制
String a = "我是一个小小的可爱的字符串";

// 结果为:"\\u6211\\u662f\\u4e00\\u4e2a\\u5c0f\\u5c0f\\u7684\\u53ef\\u7231\\u7684\\u5b57\\u7b26\\u4e32"	
String unicode = Convert.strToUnicode(a);

// 结果为:"我是一个小小的可爱的字符串"
String raw = Convert.unicodeToStr(unicode);

7、编码转换

   在接收表单的时候,我们常常被中文乱码所困扰,其实大多数原因是使用了不正确的编码方式解码了数据。于是Convert.convertCharset方法便派上用场了,它可以把乱码转为正确的编码方式。

代码语言:javascript
复制
String a = "我不是乱码";
// 转换后result为乱码
String result = Convert.convertCharset(a, CharsetUtil.UTF_8, CharsetUtil.ISO_8859_1);
String raw = Convert.convertCharset(result, CharsetUtil.ISO_8859_1, "UTF-8");
Assert.assertEquals(raw, a);

8、金额大小写转换

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

代码语言:javascript
复制
double a = 67556.32;

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

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

9、数字转换

代码语言:javascript
复制
// 数字转为英文表达
// ONE HUNDRED AND CENTS TWENTY THREE ONLY
String format = Convert.numberToWord(100.23);

// 数字简化
// 1.2k
String format1 = Convert.numberToSimple(1200, false);

// 数字转中文
// 数字转中文方法中,只保留两位小数
// 一万零八百八十九点七二
String f1 = Convert.numberToChinese(10889.72356, false);
// 使用金额大写
// 壹万贰仟陆佰伍拾叁
String f1 = Convert.numberToChinese(12653, true);

// 数字中文表示转换为数字
// 1012
String f1 = Convert.numberToChinese("一千零一十二");

10、原始类和包装类转换

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

代码语言:javascript
复制
// 去包装
Class<?> wrapClass = Integer.class;

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

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

// 结果为:Long.class
Class<?> wraped = Convert.wrap(primitiveClass);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、简介
    • 痛点
      • Convert类
      • 二、Java常见类型转换
        • 1、转换为字符串
          • 2、转换为指定类型数组
            • 3、转换为日期对象
              • 4、转换为集合
                • 5、半角和全角转换
                  • 6、Unicode和字符串转换
                    • 7、编码转换
                      • 8、金额大小写转换
                        • 9、数字转换
                          • 10、原始类和包装类转换
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档