Skip to content

Mar 07: Object References

Learning Objectives

After today's class, you should be able to:

  • Draw a memory diagram that includes arrays, objects, and methods.
  • Use a memory diagram to indicate when two variables are aliased.
  • Predict the final output of a program based on a memory diagram.

Reminders

Lesson Outline

Review [5 min]

Diagram [20 min]

Activity [25 min]

Example Code

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class Example {

    public static void main(String[] args) {
        Car[] cars = new Car[3];
        cars[0] = new Car("Dodge", 1989);
        cars[1] = new Car("Tesla", 2024);
        cars[2] = cars[0];

        for (Car car : cars) {
            car.accelerate();
            System.out.println(car);
        }

        System.out.println();
        race(cars);
    }

    public static void race(Car[] cars) {
        int i;
        int best = 0;
        for (i = 1; i < cars.length; i++) {
            if (cars[i].getSpeed() > cars[best].getSpeed()) {
                best = i;
            }
        }
        System.out.println("Winner at index " + best);
        System.out.println(cars[best]);
    }

}
Output:
A 1989 Dodge that is going 5.0 mph
A 2024 Tesla that is going 5.0 mph
A 1989 Dodge that is going 10.0 mph

Winner at index 0
A 1989 Dodge that is going 10.0 mph