本小節將學習如何在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中方法重載和方法重寫的區別
下一篇:無