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

语法
char charAt(int index)
index是字符的索引位置,从0开始。index不在有效范围内(即index < 0或index >= 字符串长度),会抛出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" 转换为 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() 是最需要掌握的两个方法。

