本小節將學習如何在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 = "YiiBai";
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。
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);
}
}
執行上面範例程式碼,得到以下結果 -
YiiBai
YiiBai
是否注意到上面程式碼在建立位元組陣列時提供了字元?
它的工作原理是因為自動裝箱和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。