杰瑞科技汇

Java字符串与字符如何高效转换?

核心概念

  • String: 是一个对象,代表一个字符序列,它是不可变的(immutable),一旦创建就不能被修改。
  • char: 是一个基本数据类型(primitive type),代表一个单一的字符。

Stringchar

String 转换到 char 通常有以下几种情况:

Java字符串与字符如何高效转换?-图1
(图片来源网络,侵删)

a) 获取字符串中的单个字符

这是最常见的操作。String 类提供了 charAt(int index) 方法,可以获取指定索引位置上的 char

注意: Java 字符串的索引从 0 开始。

示例代码:

public class StringToCharExample {
    public static void main(String[] args) {
        String str = "Hello";
        // 获取索引为 1 的字符 (第二个字符)
        char ch = str.charAt(1);
        System.out.println("索引为 1 的字符是: " + ch); // 输出: e
        // 获取第一个字符
        char firstChar = str.charAt(0);
        System.out.println("第一个字符是: " + firstChar); // 输出: H
        // 获取最后一个字符
        char lastChar = str.charAt(str.length() - 1);
        System.out.println("最后一个字符是: " + lastChar); // 输出: o
    }
}

重要:边界检查 如果传入的 index 超出范围(小于 0 或大于等于字符串长度),charAt() 方法会抛出 StringIndexOutOfBoundsException 异常。

Java字符串与字符如何高效转换?-图2
(图片来源网络,侵删)
String str = "Hi";
try {
    char ch = str.charAt(2); // 索引 2 超出范围 (最大为 1)
    System.out.println(ch);
} catch (StringIndexOutOfBoundsException e) {
    System.out.println("错误:索引超出范围!"); // 这行会被执行
}

b) 将整个字符串转换为 char 数组

如果你想将字符串中的所有字符都提取出来,可以使用 toCharArray() 方法,它会返回一个包含字符串所有字符的 char 数组。

示例代码:

public class StringToCharArrayExample {
    public static void main(String[] args) {
        String str = "Java";
        // 将字符串转换为 char 数组
        char[] charArray = str.toCharArray();
        // 打印数组
        System.out.println("转换后的 char 数组: " + java.util.Arrays.toString(charArray));
        // 输出: 转换后的 char 数组: [J, a, v, a]
        // 遍历数组
        System.out.print("遍历字符: ");
        for (char c : charArray) {
            System.out.print(c + " "); // 输出: J a v a 
        }
    }
}

charString

char 转换到 String 也有几种常用方法。

a) 使用 String 的构造函数

可以直接使用 String 类的构造函数,它接受一个 char 数组作为参数,如果你只有一个 char,可以创建一个只包含该字符的数组。

Java字符串与字符如何高效转换?-图3
(图片来源网络,侵删)

示例代码:

public class CharToStringExample1 {
    public static void main(String[] args) {
        char ch = 'A';
        // 方法1: 创建一个单元素数组,然后用 String 构造函数
        String str1 = new char[]{ch};
        System.out.println("使用构造函数转换: " + str1); // 输出: A
    }
}

注意: new String(ch) 是错误的,因为 String 的构造函数不接受单个 char 作为参数。

b) 使用 String.valueOf(char) 方法

这是最推荐、最简洁、最高效的方法。String.valueOf() 是一个静态重载方法,可以接受各种参数(包括 char)并将其转换为 String

示例代码:

public class CharToStringExample2 {
    public static void main(String[] args) {
        char ch = 'B';
        // 方法2: 使用 String.valueOf() (推荐)
        String str2 = String.valueOf(ch);
        System.out.println("使用 valueOf() 转换: " + str2); // 输出: B
    }
}

c) 使用字符的拼接

一个非常巧妙且简单的方法是,将 char 与一个空字符串 进行拼接,因为任何类型与字符串拼接的结果都是字符串,Java 会自动将 char 转换为 String

示例代码:

public class CharToStringExample3 {
    public static void main(String[] args) {
        char ch = 'C';
        // 方法3: 使用空字符串拼接 (巧妙且常用)
        String str3 = ch + "";
        System.out.println("使用拼接转换: " + str3); // 输出: C
    }
}

char 数组 转 String

如果你有一个 char 数组,想把它变成一个 String,有两种主要方式。

a) 使用 String 构造函数

这是最直接的方式。

示例代码:

public class CharArrayToStringExample1 {
    public static void main(String[] args) {
        char[] chars = {'J', 'a', 'v', 'a'};
        // 方法1: 使用 String 构造函数
        String str1 = new String(chars);
        System.out.println("使用构造函数转换: " + str1); // 输出: Java
    }
}

b) 使用 String.valueOf(char[]) 方法

同样,String.valueOf() 方法也提供了重载版本来处理 char 数组。

示例代码:

public class CharArrayToStringExample2 {
    public static void main(String[] args) {
        char[] chars = {'P', 'y', 't', 'h', 'o', 'n'};
        // 方法2: 使用 String.valueOf()
        String str2 = String.valueOf(chars);
        System.out.println("使用 valueOf() 转换: " + str2); // 输出: Python
    }
}

总结与最佳实践

转换方向 推荐方法 示例 备注
String -> char charAt(index) char c = "abc".charAt(0); 获取单个字符,注意索引越界。
String -> char[] toCharArray() char[] arr = "abc".toCharArray(); 将整个字符串转为字符数组。
char -> String String.valueOf() String s = String.valueOf('A'); 最推荐,清晰、高效。
char -> String 字符串拼接 String s = 'A' + ""; 非常简洁,但底层原理是创建一个 StringBuilder
char[] -> String String 构造函数 String s = new char[]{'A', 'B'}; 最直接的方式。
char[] -> String String.valueOf() String s = String.valueOf(new char[]{'A', 'B'}); 同样是很好的选择。

核心要点:

  1. String 不可变:所有对 String 的修改操作(如 replace, toUpperCase)实际上都是返回一个新的 String 对象,原对象本身不变。
  2. charAt 要小心:在使用 charAt 时,务必确保索引在有效范围内,否则会抛出异常。
  3. valueOf 是万能钥匙:对于基本数据类型和数组转 StringString.valueOf() 通常是首选,因为它代码清晰且性能良好。
分享:
扫描分享到社交APP
上一篇
下一篇