What type of parameter does the System.out.println() method expect?

A good answer might be:

It expects a reference to a String as a parameter.

Automatic Call of toString()

Actually, System.out.println() can deal with several types of parameters, and one of them is reference to a String. No version of System.out.println() was written to use a Point reference, however. So the following does not look like it will work:

Point a = new Point();  // a is a Point reference

System.out.println( a ); 
                    |
                    +--- should be String reference 

However, it does work, for the following reason:

When a parameter should be a String reference, but a reference to another type of object is given, Java will call the object's toString() method to get a String reference.

All objects (of any type at all) have a toString() method, although for some objects it is not very useful.

QUESTION 10:

The above println() can be executed without a problem. Does this mean that the object referenced by a is copied to the monitor?