String getBytes()
方法的语法是
string.getBytes()
string.getBytes(Charset charset)
string.getBytes(String charsetName)
这里,string是String
类的一个对象。
getBytes()
方法返回一个字节数组。
1. 不带任何参数的 getBytes()
如果您不传递任何参数,getBytes()
将使用平台默认的字符集对字符串进行编码。
示例:不带任何参数的 getBytes()
import java.util.Arrays;
class Main {
public static void main(String[] args) {
String str = "Java";
byte[] byteArray;
// convert the string to a byte array
// using platform's default charset
byteArray = str.getBytes();
System.out.println(Arrays.toString(byteArray));
}
}
输出
[74, 97, 118, 97]
注意:我们在上面的示例中使用了 Arrays
类来以可读的格式打印字节数组。这与 getBytes(
) 无关。
2. 带 CharSet 参数的 getBytes()
Java 中有以下不同的 CharSet
可用
- UTF-8 - 八位 UCS 转换格式
- UTF-16 - 十六位 UCS 转换格式
- UTF-16BE - 十六位 UCS 转换格式,大端字节序
- UTF-16LE - 十六位 UCS 转换格式,小端字节序
- US-ASCII - 七位 ASCII
- ISO-8859-1 - ISO Latin Alphabet No. 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;
// using UTF-8 for encoding
byteArray = str.getBytes(Charset.forName("UTF-8"));
System.out.println(Arrays.toString(byteArray));
// using UTF-16 for encoding
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. 带 String 参数的 getBytes()
您也可以使用字符串将编码类型指定给 getBytes()
。当您以这种方式使用 getBytes()
时,您必须将代码包装在 try...catch 块中。
示例:带 String 参数的 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));
// wrong encoding
// throws an exception
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.Arrays 以可读的格式打印字节数组。这与 getBytes()
无关。