字符串与字符、字节数组
这页整理 String、char[]、byte[] 之间的转换。
String 与 char[]
String 转 char[]
String s = "hello";
char[] chars = s.toCharArray();char[] 转 String
char[] chars = {'h', 'e', 'l', 'l', 'o'};
String s = new String(chars);String 与 byte[]
String 转 byte[]
String s = "hello";
byte[] bytes = s.getBytes();建议指定编码:
byte[] bytes = s.getBytes(StandardCharsets.UTF_8);byte[] 转 String
String s = new String(bytes, StandardCharsets.UTF_8);使用 StandardCharsets.UTF_8 需要导入:
import java.nio.charset.StandardCharsets;char 和 byte 的区别
| 类型 | 含义 | 常见用途 |
|---|---|---|
char | 字符 | 处理字符内容 |
byte | 字节 | 文件、网络、编码后的数据 |
字符串本质上是字符序列;保存到文件或网络传输时,需要通过编码变成字节序列。
常见问题
为什么会乱码
乱码通常是编码和解码不一致:
byte[] bytes = s.getBytes(StandardCharsets.UTF_8);
String wrong = new String(bytes, StandardCharsets.ISO_8859_1);写入和读取时应尽量使用同一种编码,比如 UTF-8。
String 是否可变
String 不可变。修改字符串时,通常会生成新的字符串对象。
如果需要频繁拼接,考虑使用 StringBuilder。
StringBuilder sb = new StringBuilder();
sb.append("hello");
sb.append(" world");
String result = sb.toString();