String, byte array. Strings are composed of characters, and characters of bytes. Chars use 2 bytes each, but often with ASCII text they can be represented in 1 byte.
With the String constructor, we create a String based on the elements in a byte array. And with String's getBytes methods, we convert String data to byte arrays.
Byte array to String. This program creates a byte array with the values 97, 98 and 99. These numbers are ASCII codes for the lowercase letters "abc."
Tip Variants of the String constructor exist. One constructs based on a range of bytes (specified by a start and offset).
Tip 2 A Charset is an optional argument. If your String contains a specific encoding of chars, please use a Charset.
public class Program {
public static void main(String[] args) {
// These are the ASCII values for lowercase A, B and C.
byte[] array = { 97, 98, 99 };
String result = new String(array);
System.out.println(result);
}
}abc
Convert from String to byte array. Excellent support too exists for converting a String to a byte array. We use getBytes, a method on the String class.
Info With no argument, we use the system's default charset to convert the String to a byte array.
Here A Charset is used based on the name provided. We test this with US-ASCII which supports 7-bit chars.
Note The example uses Array.toString to "pretty-print" the arrays to the Console output.
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class Program {
public static void main(String[] args) throws UnsupportedEncodingException {
// The string we want to convert.
String letters = "abc";
System.out.println(letters);
// Use default charset.
byte[] valuesDefault = letters.getBytes();
// ... Use Arrays.toString to display our byte array.
System.out.println(Arrays.toString(valuesDefault));
// Specify US-ASCII char set directly.
byte[] valuesAscii = letters.getBytes("US-ASCII");
System.out.println(Arrays.toString(valuesAscii));
}
}abc
[97, 98, 99]
[97, 98, 99]
Charsets are complex. Not all text is easy-to-process 7-bit ASCII. With byte arrays, we convert 2 byte chars into 1 byte elements. This is problematic but sometimes safe.
In Java, built-in approaches, like the String constructor and the getBytes methods, are handy. We can specify charsets. And for debugging, Arrays.toString displays byte arrays.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on May 26, 2023 (edit).