1. Overview

In this tutorial, we’ll explore the difference between null and empty arrays in Java. While they might sound similar, null and empty arrays have distinct behaviors and uses crucial for proper handling.

Let’s explore how they work and why they matter.

2. null Array in Java

A null array in Java indicates that the array reference doesn’t point to any object in memory. Java initializes reference variables, including arrays, to null by default unless we explicitly assign a value.

If we attempt to access or manipulate a null array, it triggers a NullPointerException, a common error indicating an attempt to use an uninitialized object reference:

@Test
public void givenNullArray_whenAccessLength_thenThrowsNullPointerException() {
    int[] nullArray = null;
    assertThrows(NullPointerException.class, () -> {
        int length = nullArray.length; 
    });
}

In the test case above, we attempt to access the length of a null array and it results in a NullPointerException. The test case executes without failure, verifying that a NullPointerException was thrown.

Proper handling of null arrays typically involves checking for null before performing any operations to avoid runtime exceptions.

3. Empty Array in Java

An empty array in Java is an array that has been instantiated but contains zero elements. This means it’s a valid array object and can be used in operations, although it doesn’t hold any values. When we instantiate an empty array, Java allocates memory for the array structure but stores no elements.

It’s important to note that when we create a non-empty array without specifying values for its elements, they default to zero-like values — 0 for an integer array, false for a boolean array, and null for an object array:

@Test
public void givenEmptyArray_whenCheckLength_thenReturnsZero() {
    int[] emptyArray = new int[0];
    assertEquals(0, emptyArray.length);
}

The above test case executes successfully, demonstrating that an empty array has a zero-length and doesn’t cause any exceptions when accessed.

Empty arrays are often used to initialize an array with a fixed size later or to signify that no elements are currently present.

4. Conclusion

In this article, we have examined the distinctions between null and empty arrays in Java. A null array signifies that the array reference doesn’t point to any object, leading to potential NullPointerException errors if accessed without proper null checks. On the other hand, an empty array is a valid, instantiated array with no elements, providing a length of zero and enabling safe operations.

The complete source code for these tests is available over on GitHub.