1D Arrays
Overview
An Array is a foundational data structure that allows you to store multiple values of the same data type within a single variable. Instead of creating 100 separate variables (score1, score2, ... score100), you create one scores array.
Arrays in Java have a crucial limitation: They are fixed in size. Once you create an array to hold 5 elements, it can never hold 6 elements. The size is permanently locked into memory. Elements in an array are accessed using 0-based indexing, meaning the first element sits at index 0.
Syntax
The length property is extremely useful for preventing out-of-bounds errors in loops. The Enhanced For-Loop is the cleanest way to read all elements if you don't care about the index numbers.
public class Main {
public static void main(String[] args) {
// 1. Array Literal (Size and data defined instantly)
String[] fruits = {"Apple", "Banana", "Cherry"};
// 2. Dynamic Initialization (Size defined, data empty)
int[] scores = new int[3]; // Locks size to 3!
scores[0] = 85;
scores[1] = 90;
scores[2] = 95;
// Accessing data (0-based)
System.out.println("First fruit: " + fruits[0]); // Apple
// 3. Iterating through an array
for (int i = 0; i < scores.length; i++) {
System.out.println(scores[i]);
}
// 4. Enhanced For-Loop (For-Each)
for (String fruit : fruits) {
System.out.println(fruit);
}
}
}Common Pitfalls
- The ArrayIndexOutOfBoundsException. Because arrays are 0-indexed, an array of size 5 has indices 0, 1, 2, 3, and 4. Attempting to access
arr[5]will immediately crash your program. - Attempting to print an array directly.
System.out.println(arr)will print a garbage memory address like[I@1b6d3586. You must useArrays.toString(arr)to print the readable contents. - Trying to resize an array. You cannot do
arr.length = 10. You must create an entirely new array and manually copy the old data over (or just use an ArrayList instead).
Interview Questions
Arrays are stored in contiguous (side-by-side) memory blocks. Because the JVM knows the exact memory address of index 0, and knows every element is the exact same byte size, it can instantly calculate the physical memory address of index 1000 without having to search for it (O(1) Time Complexity).
When you do new int[5], Java automatically fills all slots with the default value 0. For object arrays (like String[]), it fills them with null.
Real-World Example
When downloading a file, data streams in as a massive sequence of raw bytes. Browsers buffer this incoming data into a highly efficient byte[] array before saving it to the hard drive.
// Low-level network streaming
byte[] buffer = new byte[1024]; // Process 1KB chunks at a time
int bytesRead = inputStream.read(buffer);Check Your Knowledge
Test your understanding of 1D Arrays with these quick questions.