AP CSA Unit-Level MCQ

Array Basics

Practice mode with 15 Java-focused questions, immediate answer checks, and explanations.

What array basics covers

An array holds a fixed number of elements of one type, created either with new int[n] or with an initializer list. Arrays created with new start at default values: 0 for int, 0.0 for double, false for boolean, and null for object types. The size is available through the length field, written without parentheses, and valid indexes run from 0 through length - 1.

Where students lose points

Writing length() for an array or length for a String is a persistent mix-up. Students also assume an array of objects starts with usable objects rather than nulls, which leads to a NullPointerException, and they try to resize an array after creation, which Java does not allow.

How it shows up on the AP exam

Unit 4 data collections. Array fundamentals are assumed knowledge in every array FRQ, so default values and the length field are worth having fully automatic.

For practice use only.

Array Basics MCQ Practice

AP CSA array basics practice: declaration and initialization, default element values, the length field, and valid index ranges on the exam.

Question 1 of 15

Answered 0 of 15

Choose one answer.

Code Tracing 01 - Array Basics: track the final printed value.

int[] data = {4, 9, 2, 7, 5, 1};
int pivot = data[1];
int result = 0;
for (int i = 0; i < data.length; i++) {
  if (i % 2 == 0) {
    result += data[i] - pivot;
  } else if (data[i] >= pivot) {
    result += data[i] % 2;
  } else {
    result -= i;
  }
}
System.out.print(result);

All 15 array basics questions

Work through the interactive quiz above first. This is the full array basics question set with worked solutions, so students can review any question after attempting it.

  1. 1.Code Tracing 01 - Array Basics: track the final printed value.

    int[] data = {4, 9, 2, 7, 5, 1};
    int pivot = data[1];
    int result = 0;
    for (int i = 0; i < data.length; i++) {
      if (i % 2 == 0) {
        result += data[i] - pivot;
      } else if (data[i] >= pivot) {
        result += data[i] % 2;
      } else {
        result -= i;
      }
    }
    System.out.print(result);
    • -14
    • -29
    • 9
    • -23
    Show worked solution

    Correct answer: -23

    The trace combines index parity, a pivot value, modulus, and an else branch. Each element contributes based on both its index and value.

  2. 2.Code Tracing 12 - Array Basics: follow the variable updates.

    int[] data = {6, 7, 4, 9, 7, 3};
    int total = 0;
    int skips = 0;
    for (int i = 0; i < data.length; i++) {
      if (data[i] > 8) {
        total += data[i] - i;
      } else {
        skips++;
      }
    }
    System.out.print(total + ":" + skips);
    • 6:5
    • 11:5
    • 6:1
    • 14:5
    Show worked solution

    Correct answer: 6:5

    The loop uses every index. Values above the threshold add value minus index; all other values increase skips.

  3. 3.Code Tracing 28 - Array Basics: trace the branch and loop path.

    import java.util.Arrays;
    public class Main {
      public static void main(String[] args) {
        int[] data = {9, 7, 2, 8, 10, 6};
        for (int i = 1; i < data.length; i++) {
          data[i] += data[i - 1] % 3;
        }
        System.out.print(Arrays.toString(data));
      }
    }
    • [9, 7, 3, 8, 12, 6]
    • [9, 7, 2, 8, 10, 6]
    • [6, 12, 8, 3, 7, 9]
    • [13, 4, 8, 7, 6, 9]
    Show worked solution

    Correct answer: [9, 7, 3, 8, 12, 6]

    Each update uses the already-mutated previous element, so the array state changes as the loop moves right.

  4. 4.Code Tracing 39 - Array Basics: watch the index changes.

    int[] data = {11, 8, 4, 10, 6, 8};
    int index = -1;
    for (int i = 0; i < data.length; i++) {
      if (data[i] >= 8 && index == -1) {
        index = i;
      }
    }
    System.out.print(index);
    • The code does not compile.
    • 0
    • 1
    • -1
    Show worked solution

    Correct answer: 0

    The guard index == -1 keeps the first matching index instead of replacing it later.

  5. 5.Code Tracing 50 - Array Basics: evaluate the state change step by step.

    int[] data = {13, 9, 6, 8, 8, 10};
    int total = 0;
    int previous = data[0];
    for (int i = 1; i < data.length; i++) {
      if (data[i] > previous) {
        total += data[i] - previous;
      } else {
        total -= previous - data[i];
      }
      previous = data[i];
    }
    System.out.print(total);
    • 7
    • 6
    • -3
    • 3
    Show worked solution

    Correct answer: -3

    The trace compares adjacent values. Increases add to total, decreases subtract, and previous changes after each comparison.

  6. 6.What is printed by the following code segment?

    int[] a = new int[4];
    a[a.length - 1] = a.length;
    System.out.print(a[3] + a[0] + a.length);
    • 4
    • 8
    • 7
    • 12
    Show worked solution

    Correct answer: 8

    Only the last element is assigned, so the sum is 4 plus 0 plus the length.

  7. 7.What is printed by the following code segment?

    int[] a = {5, 10, 15};
    int[] b = a;
    b[0] = b[2];
    System.out.print(a[0] + " " + b[2]);
    • 5 15
    • 15 5
    • 15 15
    • 5 5
    Show worked solution

    Correct answer: 15 15

    The two names refer to one array, so the write through b is visible through a.

  8. 8.What is printed by the following code segment?

    int[] a = {1, 2, 3};
    int[] b = new int[3];
    for (int i = 0; i < a.length; i++)
    {
        b[a.length - 1 - i] = a[i];
    }
    System.out.print(b[0] + "" + b[1] + b[2]);
    • 123
    • 111
    • 333
    • 321
    Show worked solution

    Correct answer: 321

    Reading forward while writing backward copies the array in reverse.

  9. 9.What is the result of executing the following code segment?

    int[] a = new int[3];
    int i = a.length;
    a[i - 1] = 1;
    a[i] = 2;
    • An ArrayIndexOutOfBoundsException is thrown after the first assignment succeeds.
    • Both assignments succeed.
    • The code does not compile.
    • An exception is thrown before either assignment runs.
    Show worked solution

    Correct answer: An ArrayIndexOutOfBoundsException is thrown after the first assignment succeeds.

    The first index is the last valid one, and the second is one past the end.

  10. 10.What is printed by the following code segment?

    String[] s = new String[3];
    s[1] = "b";
    int c = 0;
    for (String v : s)
    {
        if (v != null) { c++; }
    }
    System.out.print(c);
    • 3
    • 1
    • 0
    • 2
    Show worked solution

    Correct answer: 1

    An object array starts full of null and only one slot was assigned.

  11. 11.What is printed by the following code segment?

    int[] a = {3, 1, 4, 1, 5};
    System.out.print(a[a[1]] + a[a[3]]);
    • 8
    • 6
    • 2
    • 4
    Show worked solution

    Correct answer: 2

    Both inner values are 1, so the expression reads index 1 twice and adds 1 to 1.

  12. 12.What is printed by the following code segment?

    double[] d = new double[2];
    boolean[] b = new boolean[2];
    System.out.print(d[0] + " " + b[0] + " " + d.length);
    • 0 false 2
    • 0.0 true 2
    • 0.0 false 0
    • 0.0 false 2
    Show worked solution

    Correct answer: 0.0 false 2

    Numeric elements default to 0.0 and boolean elements to false, and the length is the declared capacity.

  13. 13.What is printed by the following code segment?

    int n = 3;
    int[] a = new int[n];
    n = 10;
    int[] b = new int[n];
    System.out.print(a.length + b.length);
    • 13
    • 20
    • 6
    • 10
    Show worked solution

    Correct answer: 13

    The first length was fixed when that array was created, so changing the variable only affects the second.

  14. 14.What is printed by the following code segment?

    int[] a = {2, 4};
    int[] b = {2, 4};
    System.out.print((a == b) + " " + (a[0] == b[0]));
    System.out.print(" " + (a.length == b.length));
    • true true true
    • false true true
    • false false true
    • false true false
    Show worked solution

    Correct answer: false true true

    The references differ because each initializer builds its own array, but the element values and lengths match.

  15. 15.What is printed by the following code segment?

    int[] a = new int[3];
    for (int i = 0; i < a.length; i++)
    {
        a[i] = i * i - i;
    }
    System.out.print(a[0] + "" + a[1] + a[2]);
    • 012
    • 014
    • 002
    • 024
    Show worked solution

    Correct answer: 002

    The formula gives 0, 0, and 2 for the three indexes.