Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
Question 1: What's wrong with the following program?Answer 1: The code never creates apublic 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()); } }Rectangle
object. With this simple program, the compiler generates a warning. However, in a more realistic situation,myRect
might be initialized tonull
in one place, say in a constructor, and used later. In that case, the program will compile just fine, but will generate aNullPointerException
during runtime.Question 2: The following code creates one
Point
object and oneRectangle
object. How many references to those objects exist after the code executes? Is either object eligible for garbage collection?Answer 2: There is one reference to the... Point point = new Point(2,4); Rectangle rectangle = new Rectangle(point, 20, 20); point = null; ...Point
object and one to theRectangle
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 tonull
so that the becomes eligible for garbage collection. But the program does not actually destroy objects.
Exercise 1: Fix the program called
SomethingIsWrong
shown in Question 1.
Answer 1: SeeSomethingIsRight
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
, 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: SeeNumberHolderDisplay
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); } }
Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
Copyright 1995-2005 Sun Microsystems, Inc. All rights reserved.