Java String 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;

    // convert the string to a byte array
    // using platform's default charset
    byteArray = str.getBytes();
    System.out.println(Arrays.toString(byteArray));
  }
}

输出

[74, 97, 118, 97]

注意:我们在上面的示例中使用了 Arrays 类来以可读的格式打印字节数组。这与 getBytes() 无关。


2. 带 CharSet 参数的 getBytes()

Java 中有以下不同的 CharSet 可用

  • UTF-8 - 八位 UCS 转换格式
  • UTF-16 - 十六位 UCS 转换格式
  • UTF-16BE - 十六位 UCS 转换格式,大端字节序
  • UTF-16LE - 十六位 UCS 转换格式,小端字节序
  • US-ASCII - 七位 ASCII
  • ISO-8859-1 - ISO Latin Alphabet 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;

    // using UTF-8 for encoding
    byteArray = str.getBytes(Charset.forName("UTF-8"));
    System.out.println(Arrays.toString(byteArray));

    // using UTF-16 for encoding
    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));

      // wrong encoding
      // throws an exception
      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() 无关。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战