Row-major order (most common)

java
int[][] grid = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

for (int r = 0; r < grid.length; r++) {
    for (int c = 0; c < grid[r].length; c++) {
        System.out.print(grid[r][c] + " ");
    }
}
// Output: 1 2 3 4 5 6 7 8 9
[123]
[456]
[789]

Column-major order

java
for (int c = 0; c < grid[0].length; c++) {
    for (int r = 0; r < grid.length; r++) {
        System.out.print(grid[r][c] + " ");
    }
}
// Output: 1 4 7 2 5 8 3 6 9
[1  2  3]
[↓  ↓  ↓]
[4  5  6]
[↓  ↓  ↓]
[7  8  9]

Enhanced for loop with 2D arrays

java
int[][] grid = {
    {1, 2, 3},
    {4, 5, 6}
};

// Outer loop: each row (a 1D array)
// Inner loop: each element in that row
for (int[] row : grid) {
    for (int val : row) {
        System.out.print(val + " ");
    }
    System.out.println();
}
1 2 3
4 5 6

Processing individual rows

java
int[][] scores = {
    {90, 85, 92},  // Student 0
    {78, 88, 95},  // Student 1
    {82, 79, 91}   // Student 2
};

// Average of row 1 (Student 1)
int sum = 0;
for (int c = 0; c < scores[1].length; c++) {
    sum += scores[1][c];
}
double avg = (double) sum / scores[1].length;
System.out.println("Student 1 avg: " + avg);  // 87.0

Processing individual columns

java
// Sum of column 2 (Assignment 2)
int colSum = 0;
for (int r = 0; r < scores.length; r++) {
    colSum += scores[r][2];
}
System.out.println("Assignment 2 total: " + colSum);  // 278

Diagonal traversal

java
int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

// Main diagonal: [0][0], [1][1], [2][2]
for (int i = 0; i < matrix.length; i++) {
    System.out.print(matrix[i][i] + " ");
}
// Output: 1 5 9

Printing a 2D array nicely

java
public static void printGrid(int[][] grid) {
    for (int[] row : grid) {
        for (int val : row) {
            System.out.printf("%4d", val);  // right-aligned, 4 chars wide
        }
        System.out.println();
    }
}
   1   2   3
   4   5   6
   7   8   9

Complete example: Tic-Tac-Toe board

java
public class TicTacToe {
    private String[][] board;
    
    public TicTacToe() {
        board = new String[3][3];
        // Fill with empty spaces
        for (int r = 0; r < 3; r++) {
            for (int c = 0; c < 3; c++) {
                board[r][c] = "-";
            }
        }
    }
    
    public void place(int r, int c, String mark) {
        board[r][c] = mark;
    }
    
    public void display() {
        for (String[] row : board) {
            for (String cell : row) {
                System.out.print(cell + " ");
            }
            System.out.println();
        }
    }
    
    public boolean checkRow(int r) {
        return !board[r][0].equals("-") &&
               board[r][0].equals(board[r][1]) &&
               board[r][1].equals(board[r][2]);
    }
    
    public static void main(String[] args) {
        TicTacToe game = new TicTacToe();
        game.place(0, 0, "X");
        game.place(1, 1, "X");
        game.place(2, 2, "X");
        game.display();
        // X - -
        // - X -
        // - - X
    }
}

AP Exam Tips

Common Mistakes

Key Vocabulary