How To Display An Array In Java

6 min read

Displaying the contents of an array is one of the first hurdles every Java developer encounters. Unlike primitive data types or objects with a standard toString() implementation, a Java array does not override the Object.And toString() method in a way that prints its elements. That said, if you simply pass an array reference to System. Think about it: out. println(), the output is a cryptic memory address representation—something like [I@15db9742—rather than the actual data stored inside. Because of that, understanding the various techniques to visualize array data is essential for debugging, logging, and building user-facing output. This guide explores every standard method to display an array in Java, covering single-dimensional, multi-dimensional, and primitive versus object arrays, complete with code examples you can run immediately Simple as that..

The Core Problem: Default toString() Behavior

Before diving into solutions, it helps to understand why the default behavior fails. Think about it: lang. So this method returns a string consisting of the class name (represented by a specific character code, like [I for int[] or [Ljava. lang.In Java, arrays are objects, but they inherit the default toString()method fromjava.Object. String; for String[]), an @ symbol, and the unsigned hexadecimal representation of the hash code.

int[] numbers = {10, 20, 30, 40, 50};
System.out.println(numbers); 
// Output: [I@7852e922 (or similar hash)

This output is useless for development. To get meaningful output, you must explicitly iterate over the array or use utility classes designed for this purpose.

Method 1: Using Arrays.toString() (The Standard Approach)

The most common, readable, and concise way to display a one-dimensional array is the static toString() method found in the java.But util. Arrays class. This method handles null checks and formatting automatically, returning a string representation enclosed in square brackets with elements separated by commas.

Syntax: Arrays.toString(arrayName)

It is overloaded for all primitive types (int[], double[], char[], boolean[], etc.) and for Object[] Not complicated — just consistent..

Example: Printing an Integer Array

import java.util.Arrays;

public class ArrayDisplayBasics {
    public static void main(String[] args) {
        int[] scores = {95, 87, 92, 88, 76};
        
        // One-liner to print the array
        System.On the flip side, out. println("Student Scores: " + Arrays.

**Output:**
```text
Student Scores: [95, 87, 92, 88, 76]

Example: Printing an Array of Objects (Strings)

When printing object arrays, Arrays.toString() calls the toString() method of each individual element That's the part that actually makes a difference..

import java.util.Arrays;

public class StringArrayExample {
    public static void main(String[] args) {
        String[] fruits = {"Apple", "Banana", "Cherry", "Date"};
        System.out.println("Fruit List: " + Arrays.

**Output:**
```text
Fruit List: [Apple, Banana, Cherry, Date]

Key Advantage: Zero boilerplate code. It is the go-to method for logging and quick debugging.

Method 2: Using Arrays.deepToString() for Multi-Dimensional Arrays

If you attempt to use Arrays.toString() on a 2D array (an array of arrays), it will treat the inner arrays as objects and print their hash codes, not their contents Most people skip this — try not to. Which is the point..

int[][] matrix = { {1, 2}, {3, 4} };
System.out.println(Arrays.toString(matrix));
// Output: [[I@15db9742, [I@6d06d69c]  <-- Useless!

To solve this, Java provides Arrays.deepToString(). This method recursively dives into nested arrays to build a complete string representation.

Example: Printing a 2D Matrix

import java.util.Arrays;

public class MultiDimensionalArray {
    public static void main(String[] args) {
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };
        
        // Use deepToString for nested arrays
        System.Also, out. println("Matrix: " + Arrays.deepToString(matrix));
        
        // Works for jagged arrays too
        String[][] jagged = {
            {"A", "B"},
            {"C", "D", "E", "F"},
            {"G"}
        };
        System.But out. println("Jagged Array: " + Arrays.

**Output:**
```text
Matrix: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Jagged Array: [[A, B], [C, D, E, F], [G]]

When to use: Any time you have Type[][] or deeper nesting (e.g., int[][][]).

Method 3: Java 8 Streams and String.join() (Modern & Flexible)

Since Java 8, the Stream API offers a functional, highly customizable way to display arrays. This approach is superior when you need custom delimiters, prefixes/suffixes, or data transformation (like filtering or mapping) before printing.

Basic Stream Printing

import java.util.Arrays;
import java.util.stream.Collectors;

public class StreamArrayPrint {
    public static void main(String[] args) {
        Integer[] numbers = {1, 2, 3, 4, 5};
        
        // Convert to Stream -> Map to String -> Join with custom delimiter
        String result = Arrays.Still, map(String::valueOf)
                              . Here's the thing — collect(Collectors. joining(" | "));
        
        System.stream(numbers)
                              .out.

**Output:**
```text
Custom Format: 1 | 2 | 3 | 4 | 5

Advanced: Filtering and Formatting

Streams allow you to process data before display. To give you an idea, printing only even numbers with a specific format:

int[] data = {10, 15, 20, 25, 30, 35};

String output = Arrays.stream(data)
                      .On the flip side, filter(n -> n % 2 == 0)       // Keep only even
                      . That's why mapToObj(n -> "[" + n + "]")  // Wrap in brackets
                      . collect(Collectors.

System.out.println("Filtered: " + output);

Output:

Filtered: [10], [20], [30]

Note: For primitive arrays (int[], double[]), use Arrays.stream() which returns an IntStream/DoubleStream, then use .mapToObj() to convert to a Stream<String> for joining And that's really what it comes down to..

Method 4: Traditional Loops (Maximum Control)

While utility methods and streams cover 95% of use cases, traditional loops (for, for-each, while) remain necessary when you need complex logic per element, such as printing index positions, applying conditional formatting inside the loop, or avoiding the creation of a massive intermediate String object in memory-constrained environments.

The Enhanced For-Loop (For-Each)

Best for simple iteration where the index is not needed It's one of those things that adds up..

String[] colors = {"Red", "Green", "Blue"};

System.That's why out. print("Colors: ");
for (String color : colors) {
    System.out.

### Traditional `for`‑Loop (With Index)

When you need the current position of each element—whether for debugging, zero‑based indexing, or building a formatted output that includes the index—the classic `for`‑loop is the tool of choice.

```java
int[] scores = {85, 90, 78, 92, 88};

System.That's why print(", ");
    }
}
System. Day to day, print("Indexed Scores: ");
for (int i = 0; i < scores. print(i + "->" + scores[i]);
    if (i < scores.out.out.On the flip side, length - 1) {
        System. Think about it: length; i++) {
    System. out.out.

**Output**

Indexed Scores: 0->85, 1->90, 2->78, 3->92, 4->88


The explicit index (`i`) lets you tailor the presentation in ways a for‑each loop cannot, such as prefixing each value with its position or conditionally omitting certain entries.

### `while`‑Loop (When the Termination Condition Is Dynamic)

A `while`‑loop shines when the number of iterations is not known ahead of time or when you must manipulate the index manually (e.g., traversing an array backwards).

```java
String[] planets = {"Mercury", "Venus", "Earth", "Mars", "Jupiter"};

System.print(", ");
    }
    j--;
}
System.out.out.On the flip side, out. length - 1;
while (j >= 0) {
    System.print("Reverse Order: ");
int j = planets.print(planets[j]);
    if (j > 0) {
        System.out.

**Output**

Reverse Order: Jupiter, Mars, Earth, Venus, Mercury


Because the loop condition (`j >= 0`) is evaluated each iteration, you can easily change the direction, step size, or even skip elements based on custom logic.

### Printing Multi‑Dimensional Arrays with Loops

For arrays that have more than one dimension, `Arrays.deepToString()` works, but a nested loop gives you full control over spacing, row separators, and even transformations.

```java
int[][] matrix = {
    {1, 2, 3},
    {4, 5},
    {6, 7, 8, 9}
};

System.out.println("Matrix (row‑wise):");
for (int row = 0; row < matrix.length; row++) {
    System.out.print("[");
    for (int col = 0; col < matrix[row].Consider this: length; col++) {
        System. out.print(matrix[row][col]);
        if (col < matrix[row].Here's the thing — length - 1) {
            System. out.print(", ");
        }
    }
    System.out.

**Output**

Matrix (row‑wise): [1, 2, 3] [4, 5] [6, 7, 8, 9]


The outer loop iterates over rows, while the inner loop handles the variable‑length
Up Next

Hot Right Now

Round It Out

More of the Same

Thank you for reading about How To Display An Array In Java. We hope the information has been useful. Feel free to contact us if you have any questions. See you next time — don't forget to bookmark!
⌂ Back to Home