Java教程 目录

Java字符串转为字节数组和字节数组

本小节将学习如何在java中将String转换为字节数组,以及如何将字节数组转换为String。

注意,本小节中有术语(概念):String表示String类,也表示字符串;而char表示char类型,也表示是一个字符。

字符串到字节数组

可以使用String类getBytes()方法使用平台的默认字符集将字符串编码为字节序列。此方法已重载,也可以传递Charset参数值指定字符集。
下面是一个简单的程序,演示了如何在java中将String转换为字节数组。

import java.util.Arrays;

public class StringToByteArray {

    public static void main(String[] args) {
        String str = "example";
        byte[] byteArr = str.getBytes();
        // print the byte[] elements
        System.out.println("String to byte array: " + Arrays.toString(byteArr));
    }
}

执行上面示例代码,得到以下结果 -

String to byte array: [89, 105, 105, 66, 97, 105]

也可以使用下面的代码获取字节数组。

byte[] byteArr = str.getBytes("UTF-8");

但是,如果提供Charset的值,那么需要捕获UnsupportedEncodingException异常或抛出它。更好的方法是使用Java 1.7中引入的StandardCharsets类,如下所示。

byte[] byteArr = str.getBytes(StandardCharsets.UTF_8);

这是在Java中将String转换为字节数组的所有不同方法。

Java字节数组转为String

下面来看一个简单的程序,演示如何在Java中将字节数组转换为String。

import java.util.Arrays;

public class JavaStringSplit {

    public static void main(String[] args) {
        byte[] byteArray = { 'Y', 'i', 'i', 'B', 'a', 'i' };
        byte[] byteArray1 = { 89, 105, 105, 66, 97, 105 };

        String str = new String(byteArray);
        String str1 = new String(byteArray1);

        System.out.println(str);
        System.out.println(str1);
    }
}

执行上面示例代码,得到以下结果 -

example
example

是否注意到上面代码在创建字节数组时提供了字符?
它的工作原理是因为自动装箱和Y字符在字节数组中被转换为 - 89。这就是字节数组到字符串转换的输出相同的原因。

String还有一个构造函数,可以提供字节数组和Charset作为参数。因此,下面的代码也可用于将字节数组转换为Java中的String。

String str = new String(byteArray, StandardCharsets.UTF_8);

String类还有一个将字节数组的子集转换为String的方法。

byte[] byteArray1 =  { 89, 105, 105, 66, 97, 105 };
String str = new String(byteArray1, 0, 3, StandardCharsets.UTF_8);

上面的代码非常精细,变量str的值将是'Yii'。这就是将字节数组转换为String。


上一篇:Java字符串拆分
下一篇:如何将String转换为char数组