符串(String)与其他类型之间的转换教程

在 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

六、异常处理与最佳实践

  1. 异常捕获

    • 数值转换时使用 try-catch处理 NumberFormatException

    • 日期解析捕获 ParseException

  2. 空值检查

    if (str != null && !str.isEmpty()) {
        // 执行转换
    }
  3. 性能优化

    • 频繁转换时优先使用基本类型方法(如 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)。掌握这些技巧可显著提升代码健壮性和开发效率。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值