String
, byte
arrayStrings 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.
String
This program creates a byte
array with the values 97, 98 and 99. These numbers are ASCII codes for the lowercase letters "abc."
String
constructor exist. One constructs based on a range of bytes (specified by a start and offset).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
String
, byte
arrayExcellent support too exists for converting a String
to a byte
array. We use getBytes
, a method on the String
class
.
String
to a byte
array.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]
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.