本小节将学习如何在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。