在 Java 中,字符串(String)与其他类型之间的转换是开发中的高频操作。以下是 Java 字符串
一、字符串转基本数据类型
1. 整数类型
-
方法:
Integer.parseInt()(返回int)或Integer.valueOf()(返回Integer对象)。 -
示例:
String str = "123"; int num1 = Integer.parseInt(str); // 基本类型 Integer num2 = Integer.valueOf(str); // 包装类型 -
注意:若字符串包含非数字字符(如
"123a"),会抛出NumberFormatException。
2. 浮点数类型
-
方法:
Double.parseDouble()(double)或Double.valueOf()(Double对象)。 -
示例:
String str = "3.14"; double num1 = Double.parseDouble(str); Double num2 = Double.valueOf(str); -
科学计数法支持:支持
"1.23E4"等格式。
3. 布尔类型
-
方法:
Boolean.parseBoolean()(返回boolean)或Boolean.valueOf()(返回Boolean对象)。 -
规则:仅
"true"(不区分大小写)返回true,其他均返回false。String str = "TRUE"; boolean flag1 = Boolean.parseBoolean(str); // true Boolean flag2 = Boolean.valueOf(str); // Boolean.TRUE
4. 字符类型
-
方法:
charAt(index)获取单个字符,或toCharArray()转换为字符数组。 -
示例:
String str = "Hello"; char c = str.charAt(0); // 'H' char[] chars = str.toCharArray(); // ['H', 'e', 'l', 'l', 'o']
二、字符串转对象类型
1. 日期类型
-
方法:使用
SimpleDateFormat解析字符串。 -
示例:
String dateStr = "2023-10-01"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { Date date = sdf.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } -
注意:
SimpleDateFormat非线程安全,推荐使用DateTimeFormatter(Java 8+)。
2. 枚举类型
-
方法:
Enum.valueOf()将字符串转为枚举实例。 -
示例:
public enum Color { RED, GREEN, BLUE } String colorStr = "RED"; Color color = Color.valueOf(colorStr); // Color.RED
3. 自定义对象
-
JSON 转换:使用 Gson 或 Jackson 库。
// 使用 Gson Gson gson = new Gson(); String json = "{\"name\":\"Alice\",\"age\":30}"; Person person = gson.fromJson(json, Person.class); // 使用 Jackson ObjectMapper mapper = new ObjectMapper(); Person person2 = mapper.readValue(json, Person.class); -
XML 转换:使用 JAXB。
JAXBContext context = JAXBContext.newInstance(Person.class); Unmarshaller unmarshaller = context.createUnmarshaller(); StringReader reader = new StringReader(xmlStr); Person person = (Person) unmarshaller.unmarshal(reader);
三、字符串转集合类型
1. List
-
方法:
Arrays.asList()分割字符串为列表。String str = "a,b,c"; List<String> list = Arrays.asList(str.split(",")); // [a, b, c]
2. Set
-
方法:通过
HashSet构造函数转换。Set<String> set = new HashSet<>(Arrays.asList(str.split(",")));
四、字符串转字节数组与字符数组
1. 字节数组
-
方法:
getBytes(),支持指定字符编码。String str = "Hello"; byte[] bytes = str.getBytes(StandardCharsets.UTF_8);
2. 字符数组
-
方法:
toCharArray()。char[] chars = "Hello".toCharArray();
五、进制转换
-
十进制转其他进制:
int num = 255; String hex = Integer.toHexString(num); // "ff" String binary = Integer.toBinaryString(num); // "11111111" -
其他进制转十进制:
String binaryStr = "1010"; int decimal = Integer.parseInt(binaryStr, 2); // 10
六、异常处理与最佳实践
-
异常捕获:
-
数值转换时使用
try-catch处理NumberFormatException。 -
日期解析捕获
ParseException。
-
-
空值检查:
if (str != null && !str.isEmpty()) { // 执行转换 } -
性能优化:
-
频繁转换时优先使用基本类型方法(如
parseInt()而非valueOf())。 -
使用
StringBuilder拼接字符串,避免+操作符的性能损耗。
-
七、高级场景
1. 自定义格式转换
-
正则表达式验证:
String email = "test@example.com"; Pattern pattern = Pattern.compile("^[\\w.-]+@[\\w.-]+\\.\\w+$"); Matcher matcher = pattern.matcher(email); boolean isValid = matcher.matches(); -
Apache Commons Lang:
import org.apache.commons.lang3.StringUtils; String reversed = StringUtils.reverse("hello"); // "olleh"
2. Base64 编码/解码
-
示例:
String encoded = Base64.getEncoder().encodeToString("Hello".getBytes()); byte[] decoded = Base64.getDecoder().decode(encoded);
总结
Java 字符串转换需根据目标类型选择合适方法,注意异常处理和输入验证。对于复杂场景(如 JSON/XML),推荐使用成熟库(Gson、Jackson、JAXB)。掌握这些技巧可显著提升代码健壮性和开发效率。

被折叠的 条评论
为什么被折叠?



