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 pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
This page was last updated on May 26, 2023 (edit).