1. Array Declaration and Initialization
In Java, arrays are objects stored on the heap, and variables hold references to them.
Basic Syntax
// Declaration
int[] numbers; // Preferred style
int numbersAlt[]; // Also valid
// Initialization with size
numbers = new int[5]; // Creates array of length 5, all elements = 0
// Declaration + initialization
int[] nums = new int[5];
// Initialization with values
int[] primes = {2, 3, 5, 7, 11};2. Default Values
When you create an array with new, all elements are automatically initialized to default values:
Type | Default Value |
|---|---|
byte, short, int, long | 0 |
float, double | 0.0 |
char | '\u0000' (null char) |
boolean | false |
Object references | null |
Example:
String[] names = new String[3];
System.out.println(names[0]); // null3. Array References
Arrays are reference types:
- Assigning one array variable to another copies the reference, not the contents.
- Modifying one affects the other.
int[] a = {1, 2, 3};
int[] b = a;
// b references the same array as a
b[0] = 99;
System.out.println(a[0]); // 99 (changed via b)4. Creating Independent Copies
To avoid shared references, you must clone or copy the array:
int[] original = {1, 2, 3};
int[] copy1 = original.clone(); // Shallow copy
int[] copy2 = java.util.Arrays.copyOf(original, original.length);
copy1[0] = 99;
System.out.println(original[0]); // Still 15. Multi-Dimensional Arrays
Java supports arrays of arrays (jagged arrays):
int[][] matrix = new int[2][3]; // 2 rows, 3 columns each
matrix[0][0] = 10;
// Jagged array
int[][] jagged = new int[2][];
jagged[0] = new int[3];
jagged[1] = new int[5];6. Complete Runnable Example
import java.util.Arrays;
public class ArrayDemo {
public static void main(String[] args) {
// 1. Declaration + initialization
int[] nums = {1, 2, 3};
System.out.println("Original: " + Arrays.toString(nums));
// 2. Reference assignment
int[] ref = nums;
ref[0] = 99;
System.out.println("After ref change: " + Arrays.toString(nums));
// 3. Independent copy
int[] copy = nums.clone();
copy[0] = 42;
System.out.println("Copy changed: " + Arrays.toString(copy));
System.out.println("Original unaffected: " + Arrays.toString(nums));
// 4. Default values
String[] names = new String[3];
System.out.println("Default String array: " + Arrays.toString(names));
// 5. Multi-dimensional
int[][] matrix = new int[2][3];
matrix[1][2] = 7;
System.out.println("Matrix: " + Arrays.deepToString(matrix));
}
}Output
Original: [1, 2, 3]
After ref change: [99, 2, 3]
Copy changed: [42, 2, 3]
Original unaffected: [99, 2, 3]
Default String array: [null, null, null]
Matrix: [[0, 0, 0], [0, 0, 7]]✅ Key Takeaways
- Arrays in Java are objects; variables store references.
- Assigning one array to another does not copy elements.
- Use
.clone()orArrays.copyOf()for independent copies. - Default values depend on the element type.
- Multi-dimensional arrays are arrays of arrays.