- 按分隔符分割字符串:这是最常见的需求,将
"apple,banana,orange"分割成["apple", "banana", "orange"]。 - 将字符串转换为字符数组:将
"hello"转换成['h', 'e', 'l', 'l', 'o']。 - 将字符串转换为字节数组:这在处理二进制数据、文件读写或网络传输时很有用。
- 将字符串转换为特定类型的数组:将
"1,2,3,4"转换成int[]数组。
下面我将详细讲解每一种情况,并提供完整的代码示例。

按分隔符分割字符串(最常用)
这是最核心的用法,使用 String 类的 split() 方法。
方法签名
public String[] split(String regex)
regex:正则表达式,这是关键点!如果你的分隔符是正则表达式中的特殊字符(如 、、、 等),需要进行转义。
示例代码
示例 1:使用逗号作为分隔符
public class StringToArrayExample {
public static void main(String[] args) {
String str = "apple,banana,orange,grape";
// 使用逗号分割字符串
String[] fruitsArray = str.split(",");
// 打印结果数组
System.out.println("分割后的数组:");
for (String fruit : fruitsArray) {
System.out.println(fruit);
}
// 输出:
// 分割后的数组:
// apple
// banana
// orange
// grape
}
}
示例 2:使用点号 作为分隔符(需要转义)
在正则表达式中表示“任意字符”,所以必须用 \\ 进行转义。

public class StringToArrayExample {
public static void main(String[] args) {
String str = "192.168.1.1";
// 错误示范:split(".") 会把字符串分割成单个字符的数组
// String[] parts = str.split(".");
// 正确示范:需要对 . 进行转义
String[] ipParts = str.split("\\.");
System.out.println("分割后的IP地址数组:");
for (String part : ipParts) {
System.out.println(part);
}
// 输出:
// 分割后的IP地址数组:
// 192
// 168
// 1
// 1
}
}
示例 3:限制分割次数
split() 方法还有一个重载版本,可以指定分割的次数。
public class StringToArrayExample {
public static void main(String[] args) {
String str = "a,b,c,d,e";
// 只分割前两次
String[] parts = str.split(",", 2); // limit = 2
System.out.println("分割后的数组 (限制次数):");
for (String part : parts) {
System.out.println(part);
}
// 输出:
// 分割后的数组 (限制次数):
// a
// b,c,d,e
}
}
将字符串转换为字符数组
这个操作非常直接,使用 String 类的 toCharArray() 方法。
方法签名
public char[] toCharArray()
示例代码
public class StringToCharArrayExample {
public static void main(String[] args) {
String str = "Hello World";
// 转换为字符数组
char[] charArray = str.toCharArray();
System.out.println("转换后的字符数组:");
for (char c : charArray) {
System.out.print(c + " ");
}
// 输出:
// 转换后的字符数组:
// H e l l o W o r l d
}
}
将字符串转换为字节数组
这个操作也很常用,尤其是在处理编码、文件I/O时,使用 String 类的 getBytes() 方法。

方法签名
public byte[] getBytes() // 或者指定字符集 public byte[] getBytes(Charset charset) public byte[] getBytes(String charsetName) throws UnsupportedEncodingException
强烈建议始终指定字符集(如 StandardCharsets.UTF_8),以避免因平台默认编码不同导致的问题。
示例代码
import java.nio.charset.StandardCharsets;
public class StringToByteArrayExample {
public static void main(String[] args) {
String str = "你好,Java"; // 包含中文字符
// 使用 UTF-8 字符集转换为字节数组
byte[] byteArray = str.getBytes(StandardCharsets.UTF_8);
System.out.println("转换后的字节数组 (UTF-8):");
for (byte b : byteArray) {
System.out.print(b + " ");
}
// 输出 (UTF-8编码下):
// -28 -67 -96 -27 -91 -67 -48 -48 -47 -17 -68 -71
}
}
将字符串转换为特定类型的数组(如 int[])
这种情况稍微复杂一些,因为 split() 方法返回的是 String[],你需要先分割,然后再将每个 String 元素转换成目标类型。
示例:将逗号分隔的数字字符串转换为 int[]
import java.util.Arrays;
public class StringToIntArrayExample {
public static void main(String[] args) {
String numbersStr = "1,2,3,4,5,10,20";
// 1. 使用 split() 方法分割字符串
String[] numberStrings = numbersStr.split(",");
// 2. 创建一个 int 数组,长度与 String 数组相同
int[] intArray = new int[numberStrings.length];
// 3. 遍历 String 数组,并转换每个元素
for (int i = 0; i < numberStrings.length; i++) {
// 使用 Integer.parseInt() 将字符串转换为 int
// 注意:如果字符串不能转换为数字,会抛出 NumberFormatException
intArray[i] = Integer.parseInt(numberStrings[i].trim()); // trim() 去除可能的空格
}
// 打印结果
System.out.println("转换后的 int 数组: " + Arrays.toString(intArray));
// 输出:
// 转换后的 int 数组: [1, 2, 3, 4, 5, 10, 20]
}
}
使用 Java 8 Stream 的简洁写法:
如果你使用的是 Java 8 或更高版本,可以使用 Stream API 让代码更简洁。
import java.util.Arrays;
import java.util.stream.Collectors;
public class StringToIntArrayStreamExample {
public static void main(String[] args) {
String numbersStr = "1, 2, 3, 4, 5, 10, 20";
// 使用 Stream 进行转换
int[] intArray = Arrays.stream(numbersStr.split(",")) // 1. 分割成 Stream<String>
.map(String::trim) // 2. 去除每个元素两端的空格
.mapToInt(Integer::parseInt) // 3. 将 String 转换为 int
.toArray(); // 4. 收集为 int 数组
System.out.println("使用 Stream 转换后的 int 数组: " + Arrays.toString(intArray));
// 输出:
// 使用 Stream 转换后的 int 数组: [1, 2, 3, 4, 5, 10, 20]
}
}
| 目标类型 | 核心方法 | 关键点/示例 |
|---|---|---|
字符串数组 (String[]) |
String.split(String regex) |
注意 regex 是正则表达式,特殊字符需转义(如 \\.)。 |
字符数组 (char[]) |
String.toCharArray() |
直接转换,非常简单。 |
字节数组 (byte[]) |
String.getBytes(Charset charset) |
强烈建议指定字符集,如 StandardCharsets.UTF_8。 |
特定类型数组 (如 int[]) |
split() + 循环/Stream + parseInt() |
先分割,再遍历转换,Java 8+ 可用 Stream 使代码更优雅。 |
