Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;
Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。
Convert介绍
Convert类可以说是一个工具方法类,里面封装了针对Java常见类型的转换,用于简化类型转换。Convert类中大部分方法为toXXX,参数为Object,可以实现将任意可能的类型转换为指定类型。同时支持第二个参数defaultValue用于在转换失败时返回一个默认值。
Java常见类型转换
1、转换为字符串:
/**
* 转换为字符串
*/
@Test
public void toStr() {
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);
}
2、转换为指定类型数组:
/**
* 转换为指定类型数组
*/
@Test
public void toIntArray() {
String[] b = { "1", "2", "3", "4" };
//结果为Integer数组
Integer[] intArray = Convert.toIntArray(b);
System.out.println(intArray.length);
long[] c = {1,2,3,4,5};
//结果为Integer数组
Integer[] intArray2 = Convert.toIntArray(c);
System.out.println(intArray2.length);
}
3、转换为日期对象:
/**
* 转换为日期对象
*/
@Test
public void toDate() {
String a = "2022-04-19";
Date value = Convert.toDate(a);
System.out.println(value);
}
4、转换为集合
/**
* 转换为集合
*/
@Test
public void toList() {
Object[] a = {"a", "你", "好", "", 1};
List<?> list = Convert.convert(List.class, a);
//从4.1.11开始可以这么用
List<?> ls2 = Convert.toList(a);
System.out.println(ls2);
}
半角和全角转换
半角转全角:
String a = "123456789";
//结果为:"123456789"
String sbc = Convert.toSBC(a);
全角转半角:
String a = "123456789";
//结果为"123456789"
String dbc = Convert.toDBC(a);
Unicode和字符串转换
Convert类同样可以在字符串和Unicode之间轻松转换:
@Test
public void unicode() {
String a = "我爱青锋";
String unicode = Convert.strToUnicode(a);
System.out.println(unicode);
String raw = Convert.unicodeToStr(unicode);
System.out.println(raw);
}
编码转换
/**
* 在接收表单的时候,我们常常被中文乱码所困扰,其实大多数原因是使用了不正确的编码方式解码了数据。
* 于是Convert.convertCharset方法便派上用场了,它可以把乱码转为正确的编码方式
*/
@Test
public void convertCharset() {
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");
System.out.println(result);
System.out.println(raw);
}
金额大小写转换
/**
* 面对财务类需求,Convert.digitToChinese将金钱数转换为大写形式
*/
@Test
public void convertTime() {
double a = 67556.32;
//结果为:"陆万柒仟伍佰伍拾陆元叁角贰分"
String digitUppercase = Convert.digitToChinese(a);
System.out.println(digitUppercase);
}
数字转换
数字简化
/**
* 数字简化
*/
@Test
public void numberToSimple() {
// 1.2k
String format1 = Convert.numberToSimple(1200);
System.out.println(format1);
}
数字转中文
/**
* 数字转中文 数字转中文方法中,只保留两位小数
*/
@Test
public void numberToChinese() {
// 一万零八百八十九点七二
String f1 = Convert.numberToChinese(10889.72356, false);
System.out.println(f1);
// 使用金额大写
// 壹万贰仟陆佰伍拾叁
String f2 = Convert.numberToChinese(12653, true);
System.out.println(f2);
}
中文转数字
/**
* 数字中文表示转换为数字
*/
@Test
public void chineseToNumber() {
// 1.2k
int f1 = Convert.chineseToNumber("一千零一十二");
System.out.println(f1);
}