📜  Java字符串getBytes()

📅  最后修改于: 2020-09-27 02:37:20             🧑  作者: Mango

Java String getBytes()方法将字符串编码为字节序列,并将其存储在字节数组中。

String getBytes()方法的语法为:

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

在这里, 字符串String类的对象。

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拉丁字母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.带有字符串参数的getBytes()

您还可以使用字符串将编码类型指定为getBytes() 。当以这种方式使用getBytes()时,必须将代码包装在try … catch块中。

示例:带有字符串参数的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()无关。