The JavaTM Tutorial

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form

Trail: Learning the Java Language
Lesson: Object and Data Basics

## Arrays of Objects

> Arrays can hold reference types as well as primitive types. You create such an array in much the same way you create an array with primitive types. Here's a small program, `ArrayOfStringsDemo` that creates an array containing three string objects then prints the strings in all lower case letters.

> >     public class ArrayOfStringsDemo {
> >         public static void main(String[] args) {
> >             String[] anArray = { "String One", "String Two", "String Three" };

> >             for (int i = 0; i < anArray.length; i++) {
> >                 System.out.println(anArray[i].toLowerCase());
> >             }
> >         }
> >     }

> This program creates and populates the array in a single statement. However, you can create an array without putting any elements in it. This brings us to a potential stumbling block, often encountered by new programmers, when using arrays that contain objects. Consider this line of code:

> >     String[] anArray = new String[5];

> After this line of code is executed, the array called `anArray` exists and has enough room to hold 5 string objects. However, the array doesn't contain any strings yet. It is empty. The program must explicitly create strings and put them in the array. This might seem obvious, however, many beginners assume that the previous line of code creates the array and creates 5 empty strings in it. Thus they end up writing code like the following, which generates a `NullPointerException`:

> >     String[] anArray = new String[5];

> >     for (int i = 0; i < anArray.length; i++) {
> >         // ERROR: the following line gives a runtime error
> >         System.out.println(anArray[i].toLowerCase());
> >     }

> The problem is more likely to occur when the array is created in a constructor or other initializer and then used somewhere else in the program.

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form