|
|
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()); } }Rectangleobject. With this simple program, the compiler generates a warning. However, in a more realistic situation,
myRectmight be initialized tonullin one place, say in a constructor, and used later. In that case, the program will compile just fine, but will generate aNullPointerExceptionduring runtime.Question 2: The following code creates one
Pointobject and one
Rectangleobject. 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; ...Pointobject and one to theRectangleobject. 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 tonullso that the becomes eligible for garbage collection. But the program does not actually destroy objects.
Exercise 1: Fix the program called
SomethingIsWrongshown in Question 1.
Answer 1: SeeSomethingIsRightpublic 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: SeeNumberHolderDisplaypublic 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-2004 Sun Microsystems, Inc. All rights reserved.