Questions and Exercieses to Objects

Questions
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); } } ... String[] students = new String[10]; String studentName = "Peter Parker"; students[0] = studentName; studentName = null; ...
 * 1) What's wrong with the following program?
 * 1) The following code creates one array and one string object. How many references to those objects exist after the code executes? Is either object eligible for garbage collection?
 * 1) How does a program destroy an object that it creates?

Exercises

 * 1) Fix the program called SomethingIsWrong shown in Question 1.
 * 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; }

Answers to Questions

 * 1) The code never creates a Rectangle object. With this simple program, the compiler generates an error. 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 at runtime.
 * 2) There is one reference to the students array and that array has one reference to the string Peter Smith. Neither object is eligible for garbage collection.
 * 3) A program does not explicitly destroy objects. A program can set all references to an object to null so that it becomes eligible for garbage collection. But the program does not actually destroy objects.

Answers to Exercises
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); } } 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); } }
 * 1) See SomethingIsRight:
 * 1) See NumberHolderDisplay: