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 = "zaixian";
        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);
    }
}

執行上面示例代碼,得到以下結果 -

zaixian
zaixian

是否注意到上面代碼在創建位元組數組時提供了字元?
它的工作原理是因為自動裝箱和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中方法重載和方法重寫的區別 下一篇:無