杰瑞科技汇

Java字符串如何转为字符数组?

在 Java 中,将 String 转换为 charchar[](字符数组)有多种方法,下面我将详细介绍这些方法,并提供相应的代码示例和注意事项。

Java字符串如何转为字符数组?-图1
(图片来源网络,侵删)

将整个 String 转换为 char[](字符数组)

如果你想把 String 中的所有字符都提取出来,可以使用 String.toCharArray() 方法。

示例代码:

public class StringToCharExample {
    public static void main(String[] args) {
        String str = "Hello";
        // 将 String 转换为 char[]
        char[] charArray = str.toCharArray();
        // 打印字符数组
        System.out.println("字符数组: " + java.util.Arrays.toString(charArray));
        // 输出: 字符数组: [H, e, l, l, o]
        // 遍历字符数组
        System.out.println("遍历字符数组:");
        for (char c : charArray) {
            System.out.print(c + " ");
        }
        // 输出: H e l l o 
    }
}

说明:

  • toCharArray()String 类的一个实例方法,它会返回一个新的 char[] 数组,包含 String 中的所有字符。
  • 原始 String 不会被修改。

获取 String 中指定位置的 char

如果你只需要 String 中的某一个字符(比如第一个字符、最后一个字符等),可以使用 String.charAt(int index) 方法。

示例代码:

public class StringToCharExample {
    public static void main(String[] args) {
        String str = "Hello";
        // 获取第一个字符(索引从 0 开始)
        char firstChar = str.charAt(0);
        System.out.println("第一个字符: " + firstChar); // 输出: H
        // 获取最后一个字符
        char lastChar = str.charAt(str.length() - 1);
        System.out.println("最后一个字符: " + lastChar); // 输出: o
        // 获取中间的字符(例如索引为 2 的字符)
        char middleChar = str.charAt(2);
        System.out.println("中间字符: " + middleChar); // 输出: l
    }
}

注意事项:

  • charAt(index) 的索引从 0 开始。
  • index 超出范围(index < 0index >= str.length()),会抛出 StringIndexOutOfBoundsException 异常。

String 中提取子串并转换为 char[]

如果你只需要 String 的一部分(子串),可以先提取子串,再转换为 char[]

示例代码:

public class StringToCharExample {
    public static void main(String[] args) {
        String str = "Hello, World!";
        // 提取子串 "World"
        String subStr = str.substring(7, 12); // 索引 7 到 11(不包括 12)
        System.out.println("子串: " + subStr); // 输出: World
        // 将子串转换为 char[]
        char[] subCharArray = subStr.toCharArray();
        System.out.println("子串的字符数组: " + java.util.Arrays.toString(subCharArray));
        // 输出: [W, o, r, l, d]
    }
}

说明:

  • substring(int beginIndex, int endIndex) 提取从 beginIndexendIndex - 1 的子串。
  • substring(int beginIndex) 提取从 beginIndex 到末尾的子串。

其他转换方式(不常用)

(1) 使用 String.getChars()

String.getChars() 方法可以提取 String 的一部分到 char[] 数组中。

Java字符串如何转为字符数组?-图2
(图片来源网络,侵删)

示例代码:

public class StringToCharExample {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char[] destArray = new char[5]; // 目标数组
        // 从 str 的索引 7 开始,复制 5 个字符到 destArray
        str.getChars(7, 12, destArray, 0);
        System.out.println("getChars 结果: " + java.util.Arrays.toString(destArray));
        // 输出: [W, o, r, l, d]
    }
}

说明:

  • getChars(srcBegin, srcEnd, dst, dstBegin)
    • srcBegin:源字符串的起始索引。
    • srcEnd:源字符串的结束索引(不包括)。
    • dst:目标字符数组。
    • dstBegin:目标数组的起始索引。

常见问题与注意事项

(1) 空字符串()的处理

  • String 是空字符串(),toCharArray() 会返回一个长度为 0char[] 数组。
  • charAt(0) 会抛出 StringIndexOutOfBoundsException

示例代码:

String emptyStr = "";
char[] emptyArray = emptyStr.toCharArray(); // 返回 []
System.out.println(emptyArray.length); // 输出: 0
// emptyStr.charAt(0); // 抛出 StringIndexOutOfBoundsException

(2) null 的处理

  • Stringnull,直接调用 toCharArray()charAt() 会抛出 NullPointerException

示例代码:

String nullStr = null;
// nullStr.toCharArray(); // 抛出 NullPointerException
// nullStr.charAt(0);     // 抛出 NullPointerException

(3) Unicode 字符的处理

  • Java 的 char 是 UTF-16 编码,可以表示大部分 Unicode 字符,但有些字符(如emoji)可能需要两个 char(代理对)。

示例代码:

String str = "😊";
char[] chars = str.toCharArray();
System.out.println(chars.length); // 输出: 2(因为 😊 是代理对)
System.out.println(chars[0]); // 输出: \uD83D
System.out.println(chars[1]); // 输出: \xDE0A

方法 用途 示例 注意事项
toCharArray() 将整个 String 转换为 char[] char[] arr = str.toCharArray(); 适用于提取所有字符
charAt(index) 获取指定索引的 char char c = str.charAt(0); 索引越界会抛异常
substring() 提取子串后转换为 char[] char[] arr = str.substring(0, 2).toCharArray(); 需要处理子串范围
getChars() 提取部分字符到 char[] str.getChars(0, 5, dest, 0); 适用于部分复制

根据你的需求选择合适的方法:

  • 如果需要整个 String 的字符数组 → toCharArray()
  • 如果只需要某个字符 → charAt(index)
  • 如果需要部分字符 → substring() + toCharArray()getChars()
Java字符串如何转为字符数组?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇