Skip to content

Mar 04: Object References

Class Canceled

Due to illness, we won’t have class today. Assignment due dates remain unchanged. Please watch the video below and work through the sample questions. See the announcement on Canvas for more details.

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.

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

Your To-Do List