Java String getBytes 方法

Java String.getBytes 方法是 String 方法之一,用于使用用户指定的 Charset 将给定字符串编码为字节序列并返回字节数组。

在本文中,我们将通过示例展示如何编写 getBytes 方法。此编程语言中的 string.getBytes 的语法如下所示。

Java String getBytes 语法

此编程语言提供了三种不同的 getBytes 方法来编码字符串。以下方法不接受任何参数,并使用默认的 charset 将给定字符串编码为字节序列。

public byte[] getBytes(); // It will return Byte Array 

//In order to use in program
String_Object.getBytes();

下面的 Java getBytes 方法将 Charset 作为参数,并使用用户指定的 Charset 将给定字符串编码为字节序列。这意味着我们允许用户指定 Charset(动态)。

public byte[] getBytes(Charset charset); // It will return Byte Array 

//In order to use in program
String_Object.getBytes(Charset charset);

下面的 String getBytes 方法将 Charset 名称作为参数。然后通过调用指定的 charset 名称将给定字符串编码为字节序列。这意味着我们正在调用所需的 Charset 名称(静态)。

public byte[] getBytes(String Charset_Name); // It will return Byte Array 

//In order to use in program
String_Object.getBytes(String Charset_Name);

返回值:getBytes 方法使用用户指定的 Charset 将此字符串编码为字节序列,并将结果存储在字节数组中。

Java String getBytes 示例

getBytes 方法将给定字符串编码为字节序列并返回一个字节数组。在此 Java 程序中,我们将使用平台的默认 charset 编码字符串。

提示:此方法会引发 Unsupported Encoding Exception。因此,始终建议使用 Try catch 块。

package StringFunctions;

public class getBytesMethod {

	public static void main(String[] args) {
		String str = "ABCDE";
		byte[] byteArray = str.getBytes();
		System.out.println("Byte Array after using the getBytes Method:");
		arrayPrint(byteArray);	
		
		String str1 = "abcd";
		byte[] bitArray = str1.getBytes();
		System.out.println("\nByte Array after using the getBytes Method:");
		arrayPrint(bitArray);	
	}
	public static void arrayPrint(byte[] anByteArray) {
		for (byte Number: anByteArray) {
			System.out.format("%d \t", Number);
		}
	}
}
Java String getBytes Method 1

提示:请参考 ASCII 表 来理解 Java 编程中的字节值。

在 getBytes 示例中,我们首先声明了两个字符串变量 str1,并分配了相应的值。

以下 String Function 语句将调用 getBytes() 方法将上面指定的 str 和 str1 编码为字节序列。从上面的截图可以看出,这两个语句都使用了平台的默认 charset。

byte[] byteArray = str.getBytes();
byte[] bitArray = str1.getBytes();

以下语句用于将字节数组元素打印到输出。

arrayPrint(byteArray);

当编译器到达上述语句时,编译器将跳转到以下函数。从下面的代码片段中,我们使用了 Foreach 循环来迭代字节数组。然后我们使用 System.out.println 语句打印每个数组元素。

public static void arrayPrint(byte[] anByteArray) {
	for (byte Number: anByteArray) {
		System.out.format("%d \t", Number);
	}
}

Java String getBytes 示例 2

在此程序中,我们将使用可用的标准 charsets 编码字符串(为最终用户提供动态功能)。

package StringFunctions;
import java.io.UnsupportedEncodingException;

public class getBytesMethod2 {
	public static void main(String[] args) {
		String str = new String("A" + "\u00ea" + "\u00f1" + "\u00fc" + "C");
		try {
			byte[] byteArray = str.getBytes();
			System.out.println("Byte Array after using:");
			arrayPrint(byteArray);	
			String s1 = new String(byteArray);
			System.out.println("\nDecryted Text = " + s1);
			
			byte[] bitArray = str.getBytes("UTF-8");
			System.out.println("\nByte Array after using:");
			arrayPrint(bitArray);
			String s2 = new String(bitArray);
			System.out.println("\nDecryted Text = " + s2);
			
			byte[] bArray = str.getBytes("ISO-8859-1");
			System.out.println("\nByte Array after using:");
			arrayPrint(bArray);
			String s3 = new String(bArray);
			System.out.println("\nDecryted Text = " + s3);
		}
     catch( UnsupportedEncodingException e){
        System.out.println("Unsupported character set");
     }
	}
	public static void arrayPrint(byte[] anByteArray) {
		for (byte bit: anByteArray) {
			System.out.format("%d \t", bit);
		}
	}
}

从输出中可以看出,默认的 charset 和标准的 charset ISO-8859-1 返回相同的结果。

Byte Array after using:
65 	-61 	-86 	-61 	-79 	-61 	-68 	67 	
Decryted Text = AêñüC

Byte Array after using:
65 	-61 	-86 	-61 	-79 	-61 	-68 	67 	
Decryted Text = AêñüC

Byte Array after using:
65 	-22 	-15 	-4 	67 	
Decryted Text = A���C

首先,我们声明了一个 String 变量 str 并使用以下语句分配了非 Unicode 文本。

str = new String("A" + "\u00ea" + "\u00f1" + "\u00fc" + "C");

以下语句将使用平台的默认 charset 编码上面指定的 str。

byteArray = str.getBytes();

它将调用 public byte [] getBytes (Charset charset) 方法,使用标准 charset UTF-8 将上面指定的 str 编码为字节序列。

bitArray = str.getBytes("UTF-8");

以下语句将调用 getBytes 方法,使用标准 charset ISO-8859-1 将上面指定的 str 编码为字节序列。

bArray = str.getBytes("ISO-8859-1");

以下 Java getBytes 语句用于将字节数组转换为字符串。

s3 = new String(bArray);

getBytes 示例 3

在此程序中,我们将通过调用可用的标准 charsets 名称(静态功能)来编码字符串。

package StringFunctions;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

public class getBytesMethod3 {
	public static void main(String[] args) {
		String str = new String("A" + "\u00ea" + "\u00f1" + "\u00fc" + "C");
		byte[] byteArray = str.getBytes(StandardCharsets.UTF_16BE);
		System.out.println("Byte Array after using:");
		arrayPrint(byteArray);	
		String s1 = new String(byteArray);
		System.out.println("\nDecryted Text = " + s1);
		
		byte[] bitArray = str.getBytes(StandardCharsets.UTF_8);
		System.out.println("\nByte Array after using:");
		arrayPrint(bitArray);
		String s2 = new String(bitArray);
		System.out.println("\nDecryted Text = " + s2);
		
		byte[] bArray = str.getBytes(Charset.defaultCharset());
		System.out.println("\nByte Array after using:");
		arrayPrint(bArray);
		String s3 = new String(bArray);
		System.out.println("\nDecryted Text = " + s3);
	}
	public static void arrayPrint(byte[] anByteArray) {
		for (byte bit: anByteArray) {
			System.out.format("%d \t", bit);
		}
	}
}
Byte Array after using:
0 	65 	0 	-22 	0 	-15 	0 	-4 	0 	67 	
Decryted Text = A���C

Byte Array after using:
65 	-61 	-86 	-61 	-79 	-61 	-68 	67 	
Decryted Text = AêñüC

Byte Array after using:
65 	-61 	-86 	-61 	-79 	-61 	-68 	67 	
Decryted Text = AêñüC

在示例中,首先,我们声明了一个 String 变量 str 并分配了非 Unicode 文本。

str = new String("A" + "\u00ea" + "\u00f1" + "\u00fc" + "C");

它将调用 getBytes 方法将字符串 str 编码为字节序列。它正在调用标准 charset 名称 UTF_16BE。

byte[] byteArray = str.getBytes(StandardCharsets.UTF_16BE);

调用方法,使用标准 charset 名称 UTF_8 将上面指定的 str 编码为字节序列。

byte[] bitArray = str.getBytes(StandardCharsets.UTF_8);

在下面的语句中,我们正在分配默认的 charset 名称。

byte[] bArray = str.getBytes(Charset.defaultCharset());

以下语句用于将字节数组转换为字符串。

s1 = new String(byteArray);

要使用 Charset.defaultCharset() 方法,您需要通过添加 import java.nio.charset.Charset; 来导入 charset 命名空间。

要使用 Standard Charsets,您需要通过添加 import java.io.charset.StandardCharsets; 来导入 Standard charset 命名空间。