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

  1. Question: What's wrong with the following program?
    //
    // This program won't compile because something is wrong.
    //
    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: 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.
  2. Question: 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: There is one reference to the Point object and one to the Rectangle object. Neither object is eligible for garbage collection.
  3. 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

  1. Exercise: Fix the program called SomethingIsWrong shown in Question 1.
    Solution: 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());
        }
    }
    
  2. Exercise: 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;
    }
    

    Solution: 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