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

Convert介绍

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

Java常见类型转换

1、转换为字符串:

  1. /**
  2. * 转换为字符串
  3. */
  4. @Test
  5. public void toStr() {
  6. int a = 1;
  7. //aStr"1"
  8. String aStr = Convert.toStr(a);
  9. System.out.println(aStr);
  10. long[] b = {1,2,3,4,5};
  11. //bStr为:"[1, 2, 3, 4, 5]"
  12. String bStr = Convert.toStr(b);
  13. System.out.println(bStr);
  14. }

2、转换为指定类型数组:

  1. /**
  2. * 转换为指定类型数组
  3. */
  4. @Test
  5. public void toIntArray() {
  6. String[] b = { "1", "2", "3", "4" };
  7. //结果为Integer数组
  8. Integer[] intArray = Convert.toIntArray(b);
  9. System.out.println(intArray.length);
  10. long[] c = {1,2,3,4,5};
  11. //结果为Integer数组
  12. Integer[] intArray2 = Convert.toIntArray(c);
  13. System.out.println(intArray2.length);
  14. }

3、转换为日期对象:

  1. /**
  2. * 转换为日期对象
  3. */
  4. @Test
  5. public void toDate() {
  6. String a = "2022-04-19";
  7. Date value = Convert.toDate(a);
  8. System.out.println(value);
  9. }

4、转换为集合

  1. /**
  2. * 转换为集合
  3. */
  4. @Test
  5. public void toList() {
  6. Object[] a = {"a", "你", "好", "", 1};
  7. List<?> list = Convert.convert(List.class, a);
  8. //从4.1.11开始可以这么用
  9. List<?> ls2 = Convert.toList(a);
  10. System.out.println(ls2);
  11. }

半角和全角转换

半角转全角:

  1. String a = "123456789";
  2. //结果为:"123456789"
  3. String sbc = Convert.toSBC(a);

全角转半角:

  1. String a = "123456789";
  2. //结果为"123456789"
  3. String dbc = Convert.toDBC(a);

Unicode和字符串转换

Convert类同样可以在字符串和Unicode之间轻松转换:

  1. @Test
  2. public void unicode() {
  3. String a = "我爱青锋";
  4. String unicode = Convert.strToUnicode(a);
  5. System.out.println(unicode);
  6. String raw = Convert.unicodeToStr(unicode);
  7. System.out.println(raw);
  8. }

编码转换

  1. /**
  2. * 在接收表单的时候,我们常常被中文乱码所困扰,其实大多数原因是使用了不正确的编码方式解码了数据。
  3. * 于是Convert.convertCharset方法便派上用场了,它可以把乱码转为正确的编码方式
  4. */
  5. @Test
  6. public void convertCharset() {
  7. String a = "我是青锋";
  8. //转换后result为乱码
  9. String result = Convert.convertCharset(a, CharsetUtil.UTF_8, CharsetUtil.ISO_8859_1);
  10. String raw = Convert.convertCharset(result, CharsetUtil.ISO_8859_1, "UTF-8");
  11. System.out.println(result);
  12. System.out.println(raw);
  13. }

金额大小写转换

  1. /**
  2. * 面对财务类需求,Convert.digitToChinese将金钱数转换为大写形式
  3. */
  4. @Test
  5. public void convertTime() {
  6. double a = 67556.32;
  7. //结果为:"陆万柒仟伍佰伍拾陆元叁角贰分"
  8. String digitUppercase = Convert.digitToChinese(a);
  9. System.out.println(digitUppercase);
  10. }

数字转换

数字简化

  1. /**
  2. * 数字简化
  3. */
  4. @Test
  5. public void numberToSimple() {
  6. // 1.2k
  7. String format1 = Convert.numberToSimple(1200);
  8. System.out.println(format1);
  9. }

数字转中文

  1. /**
  2. * 数字转中文 数字转中文方法中,只保留两位小数
  3. */
  4. @Test
  5. public void numberToChinese() {
  6. // 一万零八百八十九点七二
  7. String f1 = Convert.numberToChinese(10889.72356, false);
  8. System.out.println(f1);
  9. // 使用金额大写
  10. // 壹万贰仟陆佰伍拾叁
  11. String f2 = Convert.numberToChinese(12653, true);
  12. System.out.println(f2);
  13. }

中文转数字

  1. /**
  2. * 数字中文表示转换为数字
  3. */
  4. @Test
  5. public void chineseToNumber() {
  6. // 1.2k
  7. int f1 = Convert.chineseToNumber("一千零一十二");
  8. System.out.println(f1);
  9. }