What is the simplest way to print an array in Java? Passing an array directly to System.out.println
produces an object reference rather than a printed representation of the array contents.
class Main { public static void main(String[] args) { String[] products = new String[]{"Coffee", "Tea", "Chocolate Bar"}; System.out.println(products); // will print something like [Ljava.lang.String;@49476842 } }
How can I get the output ["Coffee", "Tea", "Chocolate Bar"]
instead?
We can print simple arrays in Java using the method Arrays.toString()
:
import java.util.Arrays; class Main { public static void main(String[] args) { String[] products = new String[]{"Coffee", "Tea", "Chocolate Bar"}; System.out.println(Arrays.toString(products)); // will print ["Coffee", "Tea", "Chocolate Bar"] } }
This will also work for arrays containing non-String
types, such as ints or doubles.
If we have an array containing other arrays, or complex custom objects, we will need to use Arrays.deepToString()
to print out an accurate representation:
import java.util.Arrays; class Main { public static void main(String[] args) { String[][] productRanges = new String[][]{{"Coffee", "Tea"}, {"Granola Bar", "Chocolate Bar"}}; System.out.println(Arrays.toString(productRanges)); // will print [[Ljava.lang.String;@49476842, [Ljava.lang.String;@78308db1] System.out.println(Arrays.deepToString(productRanges)); // will print [[Coffee, Tea], [Granola Bar, Chocolate Bar]] } }
Loved by over 4 million developers and more than 90,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.