Java String getBytes()方法将字符串编码为字节序列,并将其存储在字节数组中。
String getBytes()方法的语法为:
string.getBytes() string.getBytes(Charset charset) string.getBytes(String charsetName)
getBytes()方法返回一个字节数组。
1. getBytes()不带任何参数
如果不传递任何参数,getBytes()则使用平台的默认字符集对字符串进行编码。
示例:不带任何参数的getBytes()
import java.util.Arrays; class Main { public static void main(String[] args) { String str = "Java"; byte[] byteArray; //将字符串转换为字节数组 //使用平台的默认字符集 byteArray = str.getBytes(); System.out.println(Arrays.toString(byteArray)); } }
输出结果
[74, 97, 118, 97]
注意:在上面的示例中,我们使用Arrays类以可读的形式打印字节数组。它与getBytes()无关。
2.使用CharSet参数的getBytes()
这是CharSetJava中可用的其他方法:
UTF-8 - 八位UCS转换格式
UTF-16 - 十六位UCS转换格式
UTF-16BE - 十六位UCS转换格式,大端字节顺序
UTF-16LE - 十六位UCS转换格式,小尾数字节顺序
US-ASCII - 七位ASCII
ISO-8859-1 - ISO拉丁字母1号
示例:带有CharSet参数的getBytes()
import java.util.Arrays; import java.nio.charset.Charset; class Main { public static void main(String[] args) { String str = "Java"; byte[] byteArray; //使用UTF-8进行编码 byteArray = str.getBytes(Charset.forName("UTF-8")); System.out.println(Arrays.toString(byteArray)); //使用UTF-16进行编码 byteArray = str.getBytes(Charset.forName("UTF-16")); System.out.println(Arrays.toString(byteArray)); } }
输出结果
[74, 97, 118, 97] [-2, -1, 0, 74, 0, 97, 0, 118, 0, 97]
注意:在上面的程序中,我们导入了java.nio.charset.Charset以使用CharSet。 并且,我们已经导入了Arrays类,以一种可读的形式打印字节数组。
3.带有字符串参数的getBytes()
还可以使用字符串指定getBytes()的编码类型。getBytes()以这种方式使用时,必须将代码包装在try ... catch块中。
示例:带有字符串参数的getBytes()
import java.util.Arrays; class Main { public static void main(String[] args) { String str = "Java"; byte[] byteArray; try { byteArray = str.getBytes("UTF-8"); System.out.println(Arrays.toString(byteArray)); byteArray = str.getBytes("UTF-16"); System.out.println(Arrays.toString(byteArray)); //错误的编码 //抛出异常 byteArray = str.getBytes("UTF-34"); System.out.println(Arrays.toString(byteArray)); } catch (Exception e) { System.out.println(e + " encoding is wrong"); } } }
输出结果
[74, 97, 118, 97] [-2, -1, 0, 74, 0, 97, 0, 118, 0, 97] java.io.UnsupportedEncodingException: UTF-34 encoding is wrong
注意:我们已经导入了java.util。数组以可读形式打印字节数组。它与getBytes()无关。