跳到主要内容

Java字符串getBytes()方法

String 类 getBytes() 方法的语法是:

string.getBytes()
string.getBytes(Charset charset)
string.getBytes(String charsetName)

这里,stringString 类的一个对象。

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() 无关。