Just as the program is about to close,
how many objects have been created? Four, counting the String object.
Has any garbage been created? No, because a reference variable points to each object.
Here is another modification to the example program:
import java.awt.*; class PointEg3 { public static void main ( String arg[] ) { Point a = new Point(); // declarations and construction combined Point b = new Point( 12, 45 ); Point c = new Point( b ); System.out.println( a.toString() ); // create a temporary String based on "a" } }
This program creates three Point
s with the same values as before,
but now the declaration and construction of each point is combined.
The last statement has the same effect as the last two statements of the previous program:
a
refers to an object with data (0,0).toString()
method of that object is called.toString()
method creates a String
object and returns a reference to it.System.out.println( reference to a String );
String
has not been saved anywhere.
Since no reference was saved in a reference variable,
there is no way to find the String
object after the println
finishes.
The String
object is now garbage.
That is OK.
It was only needed for one purpose, and that purpose is completed.
Using objects in this manner is very common.
What type of parameter (stuff inside parentheses) does the System.out.println()
method expect?