杰瑞科技汇

Java String转char有哪些方法?

获取字符串中的某一个字符(最常用)

如果你想获取字符串中特定位置的字符,可以使用 String 类的 charAt(int index) 方法。

Java String转char有哪些方法?-图1
(图片来源网络,侵删)

语法

char charAt(int index)
  • index 是字符的索引位置,从 0 开始。
  • index 不在有效范围内(即 index < 0index >= 字符串长度),会抛出 StringIndexOutOfBoundsException 异常。

示例代码

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

将字符串的第一个字符转换成 char

这是一个非常常见的特殊需求,可以结合 charAt() 和字符串长度判断来实现。

示例代码

public class FirstCharExample {
    public static void main(String[] args) {
        String str1 = "Java";
        String str2 = ""; // 空字符串
        char firstChar;
        if (str1 != null && !str1.isEmpty()) {
            firstChar = str1.charAt(0);
            System.out.println("字符串 '" + str1 + "' 的第一个字符是: " + firstChar); // 输出: J
        } else {
            System.out.println("字符串为空或null,无法获取第一个字符。");
        }
        // 处理空字符串
        if (str2 != null && !str2.isEmpty()) {
            firstChar = str2.charAt(0);
        } else {
            System.out.println("字符串 '" + str2 + "' 为空,无法获取第一个字符。"); // 输出: 字符串 '' 为空,无法获取第一个字符。
        }
    }
}

最佳实践:在调用 charAt(0) 之前,务必检查字符串是否为 null 或空字符串 (),否则会抛出异常。


将字符串的所有字符转换成 char 数组

如果你想将一个字符串中的所有字符都提取出来,存入一个 char 类型的数组中,可以使用 String 类的 toCharArray() 方法。

语法

char[] toCharArray()

示例代码

public class StringToCharArrayExample {
    public static void main(String[] args) {
        String str = "Java";
        // 将字符串转换为 char 数组
        char[] charArray = str.toCharArray();
        // 打印数组中的每个字符
        System.out.println("字符串 \"" + str + "\" 转换为 char 数组后:");
        for (char c : charArray) {
            System.out.println(c);
        }
        // 也可以直接打印数组
        System.out.println("直接打印数组: " + java.util.Arrays.toString(charArray));
    }
}

输出:

Java String转char有哪些方法?-图2
(图片来源网络,侵删)
字符串 "Java" 转换为 char 数组后:
J
a
v
a
直接打印数组: [J, a, v, a]

使用 Character 类的 toChars() 方法 (较少用)

Character 类提供了一个静态方法 toChars(int codePoint),它可以将一个 Unicode 码点转换成一个 char 数组,这个方法主要用于处理那些需要两个 char 表示的增补字符(Supplementary Characters),例如某些表情符号或生僻字。

示例代码

public class ToCharsExample {
    public static void main(String[] args) {
        // 一个普通的字符 'A'
        int codePoint1 = 'A';
        char[] chars1 = Character.toChars(codePoint1);
        System.out.println("码点 " + codePoint1 + " 转换为: " + java.util.Arrays.toString(chars1)); // 输出: [A]
        // 一个增补字符 (一个生僻字或Emoji)
        // '𠮷' 的 Unicode 码点是 U+20BB7,需要两个 char 表示
        int codePoint2 = 0x20BB7;
        char[] chars2 = Character.toChars(codePoint2);
        System.out.println("码点 " + codePoint2 + " 转换为: " + java.util.Arrays.toString(chars2));
        System.out.println("数组长度: " + chars2.length); // 输出: 2
    }
}

注意:对于绝大多数日常使用的 ASCII 和基本多语言平面(BMP)内的字符,这个方法返回的数组长度为 1,只有在处理特殊字符时,其优势才会体现出来。


总结与选择

你的需求 推荐方法 示例
获取字符串中某一个特定位置的字符 String.charAt(int index) char c = myString.charAt(5);
获取字符串的第一个字符 String.charAt(0) (需做空检查) if(!myString.isEmpty()) char c = myString.charAt(0);
将字符串所有字符都提取出来 String.toCharArray() char[] arr = myString.toCharArray();
处理复杂的 Unicode 码点(如 Emoji) Character.toChars(int codePoint) char[] arr = Character.toChars(0x1F600);

对于初学者和绝大多数应用场景,charAt()toCharArray() 是最需要掌握的两个方法。

Java String转char有哪些方法?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇