Java的String类getBytes()方法将字符串编码为字节序列并将其保存在字节数组中。

语法

getBytes()方法有三种变体。其语法如下:

public byte[] getBytes()  
public byte[] getBytes(Charset charset)  
public byte[] getBytes(String charsetName)throws UnsupportedEncodingException  

参数

charset / charsetName - 方法支持的字符集的名称。

返回值

字节序列

异常抛出

UnsupportedEncodingException:当所提到的字符集不受该方法支持时,抛出此异常。

内部实现

public byte[] getBytes() {
return StringCoding.encode(value, 0, value.length);
}

getByte()方法的内部实现使用了StringCoding类的encode()方法,该方法将字符串编码为字节序列并返回一个字节数组。方法的第一个参数是要编码的字符串,第二个参数是要编码的字符串的起始偏移量,第三个参数是要编码的字符的数目。

Java String class getBytes()方法示例 无参数的getBytes()方法使用平台的默认字符集,即UTF-8对字符串进行编码。以下两个示例显示了相同的结果。

文件名:StringGetBytesExample.java

arduino
public class StringGetBytesExample{  
public static void main(String args[]){  
String s1="ABCDEFG";  
byte[] barr=s1.getBytes();  
for(int i=0;i<barr.length;i++){  
System.out.println(barr[i]);  
}  
}}  

现在测试一下:

65
66
67
68
69
70
71

Java String class getBytes()方法示例2

文件名:StringGetBytesExample2.java

该方法返回一个字节数组,可以将其传递回String构造函数以获取String。

arduino
public class StringGetBytesExample2 {  
    public static void main(String[] args) {  
        String s1 = "ABCDEFG";  
        byte[] barr = s1.getBytes();  
        for(int i=0;i<barr.length;i++){  
            System.out.println(barr[i]);  
        }  
        // Getting string back   
        String s2 = new String(barr);  
        System.out.println(s2);  
    }  
}  

现在测试一下:

65
66
67
68
69
70
71
ABCDEFG

Java String class getBytes()方法示例3

该示例演示了将字符串编码为不同字符集的过程。

文件名: StringGetBytesExample3.java

java
import java.io.*;

public class StringGetBytesExample3 {
    public static void main(String argvs[]) {
        String str = "Welcome to Java.";
        System.out.println("输入的字符串为:");
        System.out.println(str + "\n");

        try {
            // 使用不同字符集进行编码
            // 16位UCS转换格式
            byte[] byteArr = str.getBytes("UTF-16");
            System.out.println("转换为UTF-16格式后的字符串为:");

            for (int j = 0; j < byteArr.length; j++) {
                System.out.print(byteArr[j]);
            }

            System.out.println("\n");

            // 大端字节序,16位UCS转换格式
            byte[] byteArr1 = str.getBytes("UTF-16BE");
            System.out.println("转换为UTF-16BE格式后的字符串为:");

            for (int j = 0; j < byteArr1.length; j++) {
                System.out.print(byteArr1[j]);
            }

            System.out.println("\n");

            // ISO拉丁字母表
            byte[] byteArr2 = str.getBytes("ISO-8859-1");
            System.out.println("转换为ISO-8859-1格式后的字符串为:");

            for (int j = 0; j < byteArr2.length; j++) {
                System.out.print(byteArr2[j]);
            }

            System.out.println("\n");

            // 小端字节序,16位UCS转换格式
            byte[] byteArr3 = str.getBytes("UTF-16LE");
            System.out.println("转换为UTF-16LE格式后的字符串为:");

            for (int j = 0; j < byteArr3.length; j++) {
                System.out.print(byteArr3[j]);
            }

        } catch (UnsupportedEncodingException g) {
            System.out.println("不支持的字符集" + g);
        }
    }
}

输出:

The input String is : 
Welcome to Java.

转换为UTF-16格式后的字符串为:
-2-10870101010809901110109010103201160111032074097011809708401120111010501100116046

转换为UTF-16BE格式后的字符串为:
0870101010809901110109010103201160111032074097011809708401120111010501100116046

转换为ISO-8859-1格式后的字符串为:
871011089911110910132116111327497118978411211110511011646

转换为UTF-16LE格式后的字符串为:
8701010108099011101090101032011601110320740970118097084011201110105011001160460

Java String类getBytes()方法示例4

以下示例显示当字符集不受getBytes()方法支持时,会抛出UnsupportedEncodingException异常。

文件名:StringGetBytesExample4.java

public class StringGetBytesExample4  
{  
// 主方法  
public static void main(String argvs[])  
{  
// 输入字符串  
String str = "欢迎来到JavaTpoint。";  
System.out.println("输入的字符串为:");  
System.out.println(str + "\n");  
  
// 编码为UTF-17  
byte[] byteArr = str.getBytes("UTF-17");  
System.out.println("转换为UTF-17后的字符串为:");  
  
for (int j = 0; j < byteArr.length; j++)   
{  
System.out.print(byteArr[j]);  
}  
  
  
}  
}  

输出:

vbnet
/StringGetBytesExample4.java:11: error: unreported exception UnsupportedEncodingException; must be caught or declared to be thrown
byte[] byteArr = str.getBytes("UTF-17");
                             ^
1 error

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想