一、简介
Hutool的Convert类是类型转换的工具类,提供了各种常见类型之间的转换方法,简化了Java中繁琐的类型转换操作。
二、基本转换方法
1. toStr - 转换为字符串
// 基本类型转字符串 String str = Convert.toStr(123); // "123" String str2 = Convert.toStr(12.34); // "12.34" String str3 = Convert.toStr(true); // "true" // 对象转字符串(处理null) String str4 = Convert.toStr(null, "默认值"); // "默认值"2. toInt - 转换为整数
int intVal = Convert.toInt("123"); // 123 int intVal2 = Convert.toInt("12.34"); // 12 int intVal3 = Convert.toInt("abc", 0); // 0(默认值)3. toLong - 转换为长整型
long longVal = Convert.toLong("123456789"); // 1234567894. toDouble - 转换为双精度浮点数
double doubleVal = Convert.toDouble("12.34"); // 12.345. toBoolean - 转换为布尔值
boolean bool = Convert.toBoolean("true"); // true boolean bool2 = Convert.toBoolean("false"); // false boolean bool3 = Convert.toBoolean("on"); // true boolean bool4 = Convert.toBoolean("yes"); // true boolean bool5 = Convert.toBoolean("1"); // true三、数组转换
1. 基本类型数组转换
String[] strArray = {"1", "2", "3"}; // 转为Integer数组 Integer[] intArray = Convert.toIntArray(strArray); // 转为Long数组 Long[] longArray = Convert.toLongArray(strArray); // 转为Double数组 Double[] doubleArray = Convert.toDoubleArray(strArray);2. 数组类型互转
int[] intArray = {1, 2, 3}; // int数组转Integer数组 Integer[] integers = Convert.toIntArray(intArray); // int数组转String数组 String[] strings = Convert.toStrArray(intArray);四、日期转换
// 字符串转日期 String dateStr = "2024-01-15"; Date date = Convert.toDate(dateStr); // 日期转字符串 String dateStr2 = Convert.toStr(new Date()); // 时间戳转日期 long timestamp = System.currentTimeMillis(); Date date2 = Convert.toDate(timestamp);五、集合转换
1. 数组转集合
String[] strArray = {"a", "b", "c"}; // 转为List List<String> list = Convert.toList(strArray); // 转为ArrayList ArrayList<String> arrayList = Convert.toList(String.class, strArray);2. 集合转数组
List<String> list = Arrays.asList("a", "b", "c"); // List转数组 String[] array = Convert.toStrArray(list);六、进制转换
1. 进制转换
// 十进制转十六进制 String hex = Convert.toHex(255); // "ff" // 十六进制转十进制 int decimal = Convert.hexToInt("ff"); // 255 // 十进制转二进制 String binary = Convert.toBinary(10); // "1010" // 二进制转十进制 int decimal2 = Convert.binaryToInt("1010"); // 102. 字符串编码转换
// 字符串编码转换 String str = "中文"; // 转为Unicode String unicode = Convert.strToUnicode(str); // Unicode转字符串 String str2 = Convert.unicodeToStr(unicode);七、数字类型转换
1. 数字格式化
// 数字转中文数字 String chineseNum = Convert.numberToChinese(12345, false); // "一万二千三百四十五" String chineseNum2 = Convert.numberToChinese(12345, true); // "壹万贰仟叁佰肆拾伍" // 数字转金额(大写) String money = Convert.numberToWord(1234.56); // "壹仟贰佰叁拾肆圆伍角陆分"2. 数字进制转换
// 任意进制转换 String result = Convert.convertBase("1101", 2, 10); // "13" // 数字转不同进制 String hex = Convert.toHex(100); // "64" String oct = Convert.toOct(100); // "144" String bin = Convert.toBinary(100); // "1100100"八、综合示例
import cn.hutool.core.convert.Convert; public class ConvertDemo { public static void main(String[] args) { // 1. 基本转换 System.out.println("=== 基本转换 ==="); System.out.println(Convert.toStr(123)); // "123" System.out.println(Convert.toInt("456")); // 456 System.out.println(Convert.toDouble("78.9")); // 78.9 System.out.println(Convert.toBoolean("true")); // true // 2. 数组转换 System.out.println("\n=== 数组转换 ==="); String[] strs = {"1", "2", "3"}; Integer[] ints = Convert.toIntArray(strs); System.out.println(Arrays.toString(ints)); // [1, 2, 3] // 3. 日期转换 System.out.println("\n=== 日期转换 ==="); Date date = Convert.toDate("2024-01-15"); System.out.println(date); // 4. 中文数字 System.out.println("\n=== 中文数字 ==="); System.out.println(Convert.numberToChinese(123456, false)); // 十二万三千四百五十六 System.out.println(Convert.numberToWord(1234.56)); // 壹仟贰佰叁拾肆圆伍角陆分 // 5. 进制转换 System.out.println("\n=== 进制转换 ==="); System.out.println(Convert.toHex(255)); // ff System.out.println(Convert.hexToInt("ff")); // 255 } }九、注意事项
空值处理:Convert类的方法通常会对null值进行安全处理,可以指定默认值
异常处理:转换失败时不会抛出异常,而是返回默认值或null
性能考虑:频繁调用时考虑缓存结果
类型安全:某些转换可能丢失精度,如double转int
十、最佳实践
// 推荐:提供默认值 int value = Convert.toInt(str, 0); // 推荐:使用泛型方法 Object obj = "123"; Integer num = Convert.convert(Integer.class, obj); // 推荐:复杂对象转换使用BeanUtil User user = new User(); UserDto dto = BeanUtil.copyProperties(user, UserDto.class);Hutool的Convert工具类大大简化了Java中的类型转换操作,使代码更加简洁易读。