Working with Arrays

1. Declaring and Creating Arrays

SyntaxExample
Declarationint[] nums; or int nums[];
Allocationint[] nums = new int[10];
Combined initint[] nums = {1, 2, 3};
Anonymous arraymethod(new int[]{1,2,3});

2. Initializing Arrays

Example: Initialization

int[] zeros = new int[5];                // [0,0,0,0,0]
int[] vals = {10, 20, 30};
String[] names = new String[]{"A", "B"};
int[] filled = new int[5];
Arrays.fill(filled, 7);                  // [7,7,7,7,7]
int[] range = IntStream.rangeClosed(1, 5).toArray();
MethodResult
new int[n]All zeros
Arrays.fill(arr, val)Fill all
Arrays.setAll(arr, i -> expr)Compute by index

3. Accessing Array Elements

OperationSyntax
Readarr[i]
Writearr[i] = value;
Lengtharr.length (no parentheses)
Bounds0 to length-1; otherwise ArrayIndexOutOfBoundsException

4. Working with Multidimensional Arrays

Example: 2D and jagged

int[][] grid = new int[3][4];
int[][] matrix = {{1,2,3},{4,5,6}};
int[][] jagged = new int[3][];
jagged[0] = new int[]{1};
jagged[1] = new int[]{1,2};
jagged[2] = new int[]{1,2,3};
FormNotes
Rectangularnew int[r][c]
Jaggednew int[r][] then assign rows
Accessmatrix[row][col]

5. Understanding Array Length

ItemDetail
Fieldarr.length (final, public)
Immutable sizeFixed after creation
2D rowsmatrix.length
2D cols (per row)matrix[i].length

6. Iterating Arrays

Example: Iteration patterns

for (int i = 0; i < arr.length; i++) sum += arr[i];
for (int v : arr) sum += v;                  // index not available
Arrays.stream(arr).forEach(System.out::println);
IntStream.range(0, arr.length).forEach(i -> ...);
PatternWhen
Index loopNeed index or modify
For-eachRead only
StreamFunctional ops

7. Copying Arrays

MethodUse
arr.clone()Shallow copy
Arrays.copyOf(arr, n)Resize
Arrays.copyOfRange(arr, from, to)Sub-array (exclusive end)
System.arraycopy(src, sPos, dst, dPos, len)Fastest, manual

8. Sorting Arrays

MethodUse
Arrays.sort(arr)Natural order, dual-pivot quicksort
Arrays.sort(arr, cmp)Object array, comparator
Arrays.sort(arr, from, to)Range sort
Arrays.parallelSort(arr)Parallel for large arrays

9. Searching Arrays

MethodNotes
Arrays.binarySearch(arr, key)Array MUST be sorted; returns index or -(insertionPoint)-1
Linear scanFor unsorted arrays, use a loop or stream .filter().findFirst()

10. Comparing Arrays

MethodBehavior
Arrays.equals(a, b)Element-wise (1D)
Arrays.deepEquals(a, b)Multi-dimensional
Arrays.compare(a, b)Lexicographic ordering (Java 9+)
Arrays.mismatch(a, b)Index of first difference (Java 9+)
a == bReference equality only — DON'T use

11. Converting Arrays

ConversionMethod
Array → ListArrays.asList(arr) (fixed size)
Array → StreamArrays.stream(arr)
Stream → Arraystream.toArray(String[]::new)
Array → StringArrays.toString(arr) / deepToString
List → Arraylist.toArray(new String[0])

12. Working with Varargs (...args)

Example: Varargs method

static int sum(int... nums) {
    int total = 0;
    for (int n : nums) total += n;
    return total;
}
sum();              // 0
sum(1, 2, 3);       // 6
sum(new int[]{1,2,3}); // 6
RuleDetail
PositionMust be the LAST parameter
ImplementationTreated as array inside method
Annotation@SafeVarargs for generic varargs