The JavaTM Tutorial
Previous Page Lesson Contents Start of Tutorial > Start of Trail > Start of Lesson Search
Feedback Form

Trail: Learning the Java Language
Lesson: Object Basics and Simple Data Objects

Answers to Questions and Exercises: Creating and Using Objects

Questions

Question 1: What's wrong with the following program?
public class SomethingIsWrong {
    public static void main(String[] args) {
        Rectangle myRect;
        myRect.width = 40;
        myRect.height = 50;
        System.out.println("myRect's area is " + myRect.area());
    }
}
Answer 1: The code never creates a Rectangle (in a .java source file) object. With this simple program, the compiler generates a warning. However, in a more realistic situation, myRect might be initialized to null in one place, say in a constructor, and used later. In that case, the program will compile just fine, but will generate a NullPointerException during runtime.

Question 2: The following code creates one Point (in a .java source file) object and one Rectangle (in a .java source file) object. How many references to those objects exist after the code executes? Is either object eligible for garbage collection?

...
Point point = new Point(2,4);
Rectangle rectangle = new Rectangle(point, 20, 20);
point = null;
...
Answer 2: There is one reference to the Point object and one to the Rectangle object. Neither object is eligible for garbage collection.

Question: How does a program destroy an object that it creates?
Answer: A program does not explicitly destroy objects. A program can set all references to an object to null so that the becomes eligible for garbage collection. But the program does not actually destroy objects.


Exercises

Exercise 1: Fix the program called SomethingIsWrong shown in Question 1.
Answer 1: See SomethingIsRight (in a .java source file)

public class SomethingIsRight {
    public static void main(String[] args) {
        Rectangle myRect = new Rectangle();
        myRect.width = 40;
        myRect.height = 50;
        System.out.println("myRect's area is " + myRect.area());
    }
}

Exercise 2: Given the following class, called NumberHolder (in a .java source file), write some code that creates an instance of the class, initializes its two member variables, and then displays the value of each member variable.

public class NumberHolder {
    public int anInt;
    public float aFloat;
}

Answer 2: See NumberHolderDisplay (in a .java source file)
public class NumberHolderDisplay {
    public static void main(String[] args) {
	NumberHolder aNumberHolder = new NumberHolder();
	aNumberHolder.anInt = 1;
	aNumberHolder.aFloat = 2.3f;
	System.out.println(aNumberHolder.anInt);
	System.out.println(aNumberHolder.aFloat);
    }
}

Previous Page Lesson Contents Start of Tutorial > Start of Trail > Start of Lesson Search
Feedback Form

Copyright 1995-2005 Sun Microsystems, Inc. All rights reserved.