Java字符串getBytes()方法
String 类 getBytes()
方法的语法是:
string.getBytes()
string.getBytes(Charset charset)
string.getBytes(String charsetName)
这里,string
是 String
类的一个对象。
getBytes()
方法返回一个字节数组。
1. 不带参数的 getBytes()
如果你没有传递任何参数,getBytes()
会使用平台的默认字符集对字符串进行编码。
示例:不带参数的 getBytes()
import java.util.Arrays;
class Main {
public static void main(String[] args) {
String str = "Java";
byte[] byteArray;
// 将字符串转换为字节数组
// 使用平台的默认字符集
byteArray = str.getBytes();
System.out.println(Arrays.toString(byteArray));
}
}
输出
[74, 97, 118, 97]
注意: 在上面的示例中,我们使用了 Arrays
类以可读的形式打印字节数组。它与 getBytes()
无关。
2. 带 CharSet 参数的 getBytes()
Java 中可用的不同 CharSet
包括:
- UTF-8 - 8位 UCS 转换格式
- UTF-16 - 16位 UCS 转换格式
- UTF-16BE - 16位 UCS 转换格式,大端字节序
- UTF-16LE - 16位 UCS 转换格式,小端字节序
- US-ASCII - 7位 ASCII
- ISO-8859-1 - ISO 拉丁字母表 No. 1
示例:带 CharSet 参数的 getBytes()
import java.util.Arrays;
import java.nio.charset.Charset;
class Main {
public static void main(String[] args) {
String str = "Java";
byte[] byteArray;
// 使用 UTF-8 进行编码
byteArray = str.getBytes(Charset.forName("UTF-8"));
System.out.println(Arrays.toString(byteArray));
// 使用 UTF-16 进行编码
byteArray = str.getBytes(Charset.forName("UTF-16"));
System.out.println(Arrays.toString(byteArray));
}
}
输出
[74, 97, 118, 97]
[-2, -1, 0, 74, 0, 97, 0, 118, 0, 97]
注意: 在上述程序中,我们导入了 java.nio.charset.Charset
来使用 CharSet
。此外,我们导入了 Arrays
类以可读的形式打印字节数组。
3. 带 String 参数的 getBytes()
你也可以使用字符串为 getBytes()
指定编码类型。当你以这种方式使用 getBytes()
时,必须将代码包裹在 try...catch 块 中。
示例:带 String 参数的 getBytes()
import java.util.Arrays;
class Main {
public static void main(String[] args) {
String str = "Java";
byte[] byteArray;
try {
byteArray = str.getBytes("UTF-8");
System.out.println(Arrays.toString(byteArray));
byteArray = str.getBytes("UTF-16");
System.out.println(Arrays.toString(byteArray));
// 错误的编码
// 抛出异常
byteArray = str.getBytes("UTF-34");
System.out.println(Arrays.toString(byteArray));
} catch (Exception e) {
System.out.println(e + " encoding is wrong");
}
}
}
输出
[74, 97, 118, 97]
[-2, -1, 0, 74, 0, 97, 0, 118, 0, 97]
java.io.UnsupportedEncodingException: UTF-34 encoding is wrong
注意: 我们导入了 java.util.Arrays 来以可读的形式打印字节数组。它与 getBytes()
无关。